<b>在C++ Builder中利用OpenGL编程的优化框架</b>[VC/C++编程]
本文“<b>在C++ Builder中利用OpenGL编程的优化框架</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
姑且不评论OpenGL的贵重后台和光亮前途,单凭其实用性和有效性就足以使其成为我们图形输出编程的首选.但是在实际工程利用中程序员没必要细心地深究OpenGL的运作机制,也常常不需求掌握各种高级的效果制作,真正需求的是最简便地操纵这个得力的工具实现输出数据的可视化,如波形、谱图、立体统计图表等的显示.有鉴于此,本文总结出了在C++Builder中OpenGL编程的实用框架.笔者经过实践,关于普通的图形输出的利用,此框架足以对付.关于复杂些的程序可以在本框架的底子上举行扩大.
在Windows环境下用OpenGL编程至少要理解以下预备知识:
OpenGL本身:关于普通的利用,我们可以认为OpenGL就是一套与窗口系统和操作系统无关的三维图形函数库.
DC和RC:每个Win32利用程序都有一个设备描写表(Device Context)简称DC,在这个设备描写表中包含了图形怎样显示在窗口的设置( GDI)信息.调用OpenGL函数必须利用设备描写表才能精确地在窗口输出.图形操作描写表(Rendering Context)简称RC,是一种设备描写表的情势,在图形操作描写表中存放一些OpenGL和操作系统相接洽的信息.图形操作描写表是传送全部OpenGL号令的端口.
像素格局:像素格局定义了OpenGL画图的属性,成立图形操作描写表首先要定义象素格局.它由这样一个数据构造实现
typedef struct tagPIXELFORMATDESCRIPTOR
{
WORD nSize; //构造大小
WORD nVersion; //版本
DWORD dwFlags; //象素缓冲的位标志
BYTE iPixelType; //RGBA情势或颜色索引情势
BYTE cColorBits; //颜色位数
BYTE cRedBits; //RGBA情势下R所占位数
BYTE cRedShift; //RGBA情势下R位数偏移
BYTE cGreenBits; //RGBA情势下G所占位数
BYTE cGreenShift; //RGBA情势下G位数偏移
BYTE cBlueBits; //RGBA情势下B所占位数
BYTE cBlueShift; //RGBA情势下B位数偏移
BYTE cAlphaBits; //RGBA情势下Alpha所占位数
BYTE cAlphaShift; //RGBA情势下Alpha位数偏移
BYTE cAccumBits; //累计缓冲区位面总数
BYTE cAccumRedBits; //累计缓冲区R位面总数
BYTE cAccumGreenBits; //累计缓冲区G位面总数
BYTE cAccumBlueBits; //累计缓冲区B位面总数
BYTE cAccumAlphaBits; //累计缓冲区Alpaha位面总数
BYTE cDepthBits; //深度缓冲位数
BYTE cStencilBits; //模板缓冲位数
BYTE cAuxBuffers; //Win32 下不支持
BYTE iLayerType; //不再利用
BYTE bReserved; //0
DWORD dwLayerMask; //不再利用
DWORD dwVisibleMask; //0
DWORD dwDamageMask; //不再利用
} PIXELFORMATDESCRIPTOR;
双缓冲技术:OpenGL支持一个显示缓冲和一个非显示缓冲.缺省的情形是全部的OpenGL绘制号令在非显示缓冲中绘制,绘制完成后再将其内容拷贝到显示缓冲区中(利用SwapBuffers函数).双缓冲使图象转换更平滑,这就是在快速动画(如波形等的及时输出)时没有屏幕闪耀的奥妙所在.
反走样技术:实际中需求画出的常常是曲线,由于计算机以离散点生成图形,曲线上会有锯齿,这就是一种走样现象.在用普通语言画图时,这一现象是难以避免的.OpenGL中操纵混合技术,把本来边界的锯齿部份用低饱和度的点补上从而实现反走样,到达平滑的边界效果.
好,我们目前可以启用下面的程序框架了.
在*.h文件的类声明中增添private成员:
private:
HGLRC hRC;
HDC hDC;
以下是呼应*.cpp文件
首先加上两个包含文件:
#include <gl\gl.h> //程序利用OpenGL的核心函数
#include <gl\glu.h> //程序利用实用库中的函数
以上是“<b>在C++ Builder中利用OpenGL编程的优化框架</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |