基于VC++ Win32+CUDA+OpenGL组合与VC++ MFC SDI+CUDA+OpenGL组合两种方案的遥感影像显示:获得的重要结论!
1、基于VC++ Win32+CUDA+OpenGL组合的遥感影像显示
在该组合方案下,初始化时将OpenGL设置为下面两种方式,效果一样
//设置方式1
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA);
//设置方式2
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
从遥感影像数据中提取出像素数据,可将其中的R、G、B三通道依次赋值给OpenGL的像素缓冲区对象 (PBO,Pixel Buffer Object)所指定的像素数据内存的R、G、B三通道。下面是测试用的产生像素数据的测试代码,实际遥感影像显示中该段代码会被CUDA核函数取代,用于从遥感影像数据文件中提取真正的像素数据。
//创建红色的纹理像素数据
void CRSQuickLookView::CreateTexturePixel()
{
int aSwathLengthDownsampled = * * ;
pPixelData =new unsigned char[aSwathLengthDownsampled];
ZeroMemory(pPixelData,aSwathLengthDownsampled);
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
int offset=i**+j*;
pPixelData[offset] = ;//红色
pPixelData[offset + ] = ;
pPixelData[offset + ] = ;
}
}
}
绘制时的代码:
glTexImage2D(GL_TEXTURE_2D, , GL_RGB, width, height, , GL_RGB, GL_UNSIGNED_BYTE, NULL);
函数glTexImage2D()中的GL_RGB设置一定要与CreateTexturePixel()函数中像素域严格保持一致,否则显示的图像会呈现花块状。
2、基于VC++ MFC SDI+CUDA+OpenGL组合的遥感影像显示
在该组合方案下,初始化时按照下面的方式完成OpenGL参数的设置:
static PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR),
,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //标志
PFD_TYPE_RGBA, //颜色模式
, //颜色位数
, , , , , ,
, , , , , , ,
, //深度位数
,
,
PFD_MAIN_PLANE,
,
, ,
};
事实证明在MFC SDI中结构体PIXELFORMATDESCRIPTOR的字段iPixelType中设置为PFD_TYPE_RGBA,包含Alpha通道,而后续绘制纹理时指定纹理的像素域为GL_RGBA或者GL_RGB,均可以得到同样的绘制结果,与是否包含Alpha通道无关,也与前面的结构体中的iPixelType字段的设置值无关,即绘制纹理时采用下面两种代码形式,均可得到一样的效果。唯一的要求是:函数glTexImage2D()中的GL_RGB设置一定要与CreateTexturePixel()函数中像素域严格保持一致,否则显示的图像会呈现花块状。
//方式1
glTexImage2D(GL_TEXTURE_2D, , GL_RGBA, width, height, , GL_RGBA, GL_UNSIGNED_BYTE, NULL);
//方式2
glTexImage2D(GL_TEXTURE_2D, , GL_RGB, width, height, , GL_RGB, GL_UNSIGNED_BYTE, NULL);
基于VC++ Win32+CUDA+OpenGL组合与VC++ MFC SDI+CUDA+OpenGL组合两种方案的遥感影像显示:获得的重要结论!的更多相关文章
- 基于GDAL的遥感影像显示(C#版)
基于GDAL的遥感影像显示(C#版) - 菜菜的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/RSyaoxin/article/details/9220735
- C#将Word转换成PDF方法总结(基于Office和WPS两种方案)
有时候,我们需要在线上预览word文档,当然我们可以用NPOI抽出Word中的文字和表格,然后显示到网页上面,但是这样会丢失掉Word中原有的格式和图片.一个比较好的办法就是将word转换成pdf,然 ...
- 基于NIO和BIO的两种服务器对比
基于BIO的服务器,服务端可能要同时保持几百万个HTTP连接,而这些连接并不是每时每刻都在传输数据,所以这种情况不适合使用BIO的服务器:而且需要保证共享资源的同步与安全,这个实现起来相对复杂.这时候 ...
- 17,基于scrapy-redis两种形式的分布式爬虫
redis分布式部署 1.scrapy框架是否可以自己实现分布式? - 不可以.原因有二. 其一:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls ...
- VC++环境下单文档SDI与OpenGL多视图分割窗口的实现-类似3DMAX的主界面
本文主要讲述如何在VC++环境下实现单文档SDI与OpenGL多视图分割窗口,最终的界面类似3DMAX的主界面.首先给出我实现的效果图: 整个实现过程网络上有很多零散的博文,请各位自行搜索,在基于对话 ...
- 第一个VC++ win32程序 绘制简单图形
创建一个VC++ win32 打开VS 新工程类型中选择Win32----Win32 Project 自己取个名字(假如叫做My1stWin) 一路next 系统会自动生成好最基本的代码 然后我们 ...
- 《VC++ 6简明教程》即VC++ 6.0入门精讲 学习进度及笔记
VC++6.0入门→精讲 2013.06.09,目前,每一章的“自测题”和“小结”三个板块还没有看(备注:第一章的“实验”已经看完). 2013.06.16 第三章的“实验”.“自测题”.“小结”和“ ...
- VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异
VC++6.0和VS2005在编写MFC应用程序时,操作方面的差异 一直用VC++6.0,对VS2005不太了解,下面简单的熟悉一下VS2005的一下功能,总结一下VS2005在编写MFC时候的应用. ...
- VC下加载JPG/GIF/PNG图片的两种方法
转载自:http://blog.sina.com.cn/s/blog_6582aa410100huil.html 仅管VC有提供相应的API和类来操作bmp位图.图标和(增强)元文件,但却不支持jpg ...
随机推荐
- bind(port)与.localAddress(new InetSocketAddress(port))区别
两者并没有什么区别,最后都会调用AbstractBootstrap这个抽象类的bind()方法.
- python-模板方法模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明: 模板方法模式时行为模式中比较简单的设计模式之一.模板方法关注这样的一类行为:该类 ...
- 记录Ubuntu 16.04 安装Docker CE
一.Docker的两个版本 Docker有两个版本: 社区版(CE) 企业版(EE) Docker Community Edition(CE)非常适合希望开始使用Docker并尝试使用基于容器的应用程 ...
- CCNA学习笔记(1) IOS操作系统 路由器 交换机 启动 自检 以及部分命令
注意:以下内容是以思科为学习环境 IOS操作系统启动: 路由和交换机和个人电脑启动没有区别,都会发送新号表示启动状态,也会进入系统自检.只得注意的是:1.一长两短的响声是显卡报警. 2.一声长鸣是内存 ...
- FineReport8.0如何连接FineIndex取数分析
1. 描述 在3.7及之前版本,FineReport连接都是通过安装多维数据集插件,然后通过多维数据库的方式连接FineBI(3.4-3.6对应711,3.7对应8.0),从4.0版本开始,FineR ...
- 葡萄城报表 SP2 新特性(1)— 单元格智能合并
中国式复杂报表的布局,因为数据的动态性和结构性,导致其布局往往是无规律,且在设计时无法预测的,如单元格合并,通常不仅希望在每一列的数据展现中,能够根据需要自动将相同的单元格合并,且每个单元格之间该属性 ...
- apktool逆向apk包
在AndroidStudio创建so一节里创建了so,并且在java里面调用so的HelloWorld方法,编译Android Studio后生成包app-debug.apk. 在逆向apk时如果该a ...
- CSS 实例之打开大门
本个实例主要的效果如下图所示 本案例主要运用到了3D旋转和定位技术.具体步骤如下: 1.首先在页面主体加三个很简单的div标签: <div class="door"> ...
- 腾讯云自建MySQL数据库访问
1. 登陆腾讯云 https://cloud.tencent.com/ 2. 登陆控制台 https://console.cloud.tencent.com/ 3. 选择云主机 4. 选择重装系统 5 ...
- YYYY-mm-dd HH:MM:SS大小写解释
d 月中的某一天.一位数的日期没有前导零. dd 月中的某一天.一位数的日期有一个前导零. ddd 周中某天的缩写名 ...