OPENGL在MFC中定义数组如何初始化

gongxin90 2009-11-21 11:26:45
GLFLOAT的定义数组如何在MFC的VIEW中实现初始化?
...全文
171 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuerenxr 2009-11-22
  • 打赏
  • 举报
回复
1、处理 PreCreateWindow(),设置 OpenGL 绘图窗口的风格:
在图形绘制前,必须指定OpenGL绘图窗口的风格,以便绘制的图形能够正确地显示,这部分代码放在PreCreateWindow()中。
cs.style |= WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CS_OWNDC;
2、初始化OpenGL场景,创建 OpenGL 的绘图设备。
OpenGL 绘图的机制是: 先用 OpenGL 的渲染上下文 Rendering Context (简称为 RC )把图画好,再把所绘结果通过 SwapBuffer() 函数传给Window 的 绘图上下文 Device Context (简记为 DC).要注意的是,程序运行过程中,可以有多个 DC,但只能有一个 RC。因此当一个 DC 画完图后,要立即释放 RC,以便其它的 DC 也使用。
在InitializeOpenGL函数中:
m_pDC = pDC;
SetupPixelFormat(); //设定绘图的位图格式
m_hRC = ::wglCreateContext(m_pDC->GetSafeHdc());//创建RC
::wglMakeCurrent(m_pDC->GetSafeHdc(), m_hRC); //RC与当前DC关联
3、设定像素格式
像素格式定义显示设备的若干特性,比如颜色位平面的数量和组织方式(RGB模式还是索引模式),是否采用双缓存模式等,OpenGL和GDI(Windows的图形设备接口)的像素格式不同,而Windows应用程序中缺省的设置是GDI像素格式,所以需要为执行OpenGL 绘制任务的窗口专门制定像素格式。对每个窗口,像素格式只能指定一次。下面的代码为OpenGL应用程序指定了像素格式:
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), // pfd结构的大小
1, // 版本号
PFD_DRAW_TO_WINDOW | // 支持在窗口中绘图
PFD_SUPPORT_OPENGL | // 支持 OpenGL
PFD_DOUBLEBUFFER, // 双缓存模式
PFD_TYPE_RGBA, // RGBA 颜色模式
24, // 24 位颜色深度
0, 0, 0, 0, 0, 0, // 忽略颜色位
0, // 没有非透明度缓存
0, // 忽略移位位
0, // 无累加缓存
0, 0, 0, 0, // 忽略累加位
32, // 32 位深度缓存
0, // 无模板缓存
0, // 无辅助缓存
PFD_MAIN_PLANE, // 主层
0, // 保留
0, 0, 0 // 忽略层,可见性和损毁掩模
}
feilinhe 2009-11-22
  • 打赏
  • 举报
回复
GLFloat只是个类型而已,你定义float或double类型的时候怎么初始化的?都是一样的

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧