OpenGL的绘图机制是

  OpenGL的绘图方式与Windows一般的绘图方式是不同的,主要区别如下:
  (1)Windows采用的是GDI(Graphy Device Interface 图形设备接口)在设备描述表DC上进行绘图
  (2)OpenGL采用的是OpenGL相关的函数(OGL的命令)在渲染描述表RC上进行绘图
  (3)OpenGL使用的是特殊的像素格式
  在Windows中使用GDI绘图时必须指定在哪个设备环境DC中绘制,同同样的在使用OpenGL函数时也必须指定一个所谓的渲染环境。正如DC要存储GDI的绘制环境信息如笔,刷和字体等,RC也必须保存OpenGL所需的渲染信息如像素格式等。

  先用OpenGL的绘图上下文Rendering Contex(渲染上下文),用GL的命令把图绘制好。在把所绘制的结果通过WinOS的SwapBuffer()函数传给WinOS的设备上下文DeviceContex,DC(绘图设备上下文)。

  一般情况下,程序运行过程中,可能有多个DC,但是OpenGL只有一个RC。所以当一个DC完成画图操作后,要立刻释放RC,这样其他的设备上下文DC也可以进行绘制。

OpenGL渲染环境RC(Render Contex)的创建相关的函数:

  渲染环境主要由以下六个wgl函数来管理:

  (1)HGLRC wglCreateContext( HDC hdc ),这个创建的过程比较耗时,一般放在初始化预言创建的过程中
  该函数用来创建一个OpenGL可用的渲染环境,并没有指定此RC就是当前线程的现行的RC。hdc必须是一个合法的支持至少16位色的屏幕设备描述表DC或内存设备描述表的句柄。该函数在调用前,设备描述表必须设置好适当的像素格式。成功创建渲染描述表RC之后,hdc可以释放或删除(此时并没有把hdc与RC关联起来,需要使用其他函数)。函数返回NULL值表示失败,否则返回值为渲染上下文的句柄。
  (2)BOOL wglDeleteContex( HGLRC hglrc )
  该函数删除一个RC,一般应用程序在删除RC之前,应使它成为非现行RC,不过,删除一个现行RC也是可以得。此时,OpenGL系统冲掉等待的绘图命令并使之成为非现行RC,后删除之。注意:删除一个属于别的线程的RC时会导致失败,所以只能管理本线程的RC。
  (3)HGLRC wglGetCurrentcontext( void )
  该函数返回线程的现行RC,如果线程无现行RC则返回NULL
  (4)HDC wglGetCurrentDC( void )
  该函数返回与线程现行RC关联的DC,如果线程无现行RC则返回NULL。
  (5)BOOL wglMakeCurrent( HDC hdc, HGLRC hglrc )
  该函数把hdc和hglrc关联起来,并使hglrc成为调用线程的现行RC,如果传给hglrc的值为NULL,则函数解除关联,并置线程的现行RC为非现行RC,测试忽略hdc参数。注意:传给该函数的hdc可以不是调用wglCreateContext时使用的值,但是,他们所关联的设备必须相同并且拥有相同的像素格式,因为创建RC是指借助于DC的基本的配置创建RC,并没有在创建的时候已经指定关联DC。

  注意:

   对于线程来说,一个线程可以创建(拥有)多个RC,一个RC可以由多个线程共享,但是只有一个RC可以成为“现行RC”,“现行RC”必然与一个DC相关联,否则RC不能成为现行RC。

  一个线程在拥有现行RC进行绘图时,别的现场将无法同时绘图,因为当前的现行RC被占用。在使用RC时,不应该释放或者删除与之关联的DC。如果应用程序在整个生命期内保持一个现行RC,则应用程序也一直占有一个DC资源。Windows系统只有有限的DC资源。

MFC管理RC与DC的方式:

(1)在WM_CREATE消息响应时创建RC(因为创建RC非常耗时,所以在创建创建的时候创建RC),创建后立即释放DC(解除此RC对DC的独占,造成其他绘图不能使用DC);当WM_PAINT消息到来时,程序再获取DC句柄,并与RC关联起来(只有窗口重绘的时候,关联DC与RC,即在使用的时候占有DC,是合理的),绘图完成后,立即解除RC与DC得关联并释放DC(同上上);当WM_DESTROY消息到来时,程序只需简单的删除RC(如果在窗口销毁的过程中,还有OGL命令执行,则需要再次关联,然后删除RC,以及消除此线程创建的DC,释放资源)

(2)RC在程序开始时创建并使之成为现行RC。它将保持为现行RC直至程序结束。相应的,GETDC在程序开始调用,RELEASEDC在程序结束时才调用。此中方法的好处是在相应WM_PAINT消息时,无需调用十分耗时的wglMakeCurrent函数。一般它要消耗几千个时钟周期。但是为了避免造成“RC”独占DC现象,以及多线程有多个RC绘图的影响,一般采用:创建,释放关联; 绘图:关联,释放;销毁:释放

具体的MFC管理RC与DC的程序下文有展示:

www.cmblog.com/icmzn

OpenGL与具体系统相关的几个函数:

  glFlush: 将GL命令队列中的命令发送给“显卡”,并清空命令队列。发送完毕后,立刻返回。不能保证之前的显卡对这些命令队列的命令是否执行完毕,(可能显卡还没有图形绘制完毕)。glFlush就是强制刷新,要知道OpenGL是使用一条渲染管线线性处理命令的,一般情况下,我们提交给OpenGL的指令并不是马上送到显卡驱动程序里被GPU执行的,而是放到一个缓冲区里面,等这个缓冲区满了再一次过发到驱动程序里执行;很多时候只有几条指令是填充不满那个缓冲区的,这就是说这些指令根本没有被发送到驱动里,所以我们要调用glFlush来强制把这些指令送到驱动里进行处理。

  glFinish: 将GL命令队列中的命令发送给“显卡”, 并清空命令队列。GL需要等显卡执行完命令完全执行完毕后(显卡完成绘图),再返回。

  OpenGL,建议一般在绘图命令GL比较冗长的情况下,可以分段调用glFlush,清空命令队列并发送给显卡先执行这些命令,最后调用glFinish进行同步处理。如,在某些的场景绘制的过程中,渲染器如果有多个,渲染执行从shader0,一直渲染到shaderN,如果采用所有的额命令绘制完毕后在调用glFinish,则会造成CPU等待GPU进行绘图,造成CPU没有充分利用,反映到效果上就是图形卡卡的,或者就是对CPU的其他有影响,如影响程序的时钟系统,因为程序在主线程停在了等待GPU的反馈信号,而对其他模块产生影响。understand!

  可以将上述情形优化为:每个shader完成后,调用一次glFlush,强制GPU开始执行命令队列中的GL绘图命令,这样在最后的shader渲染后,调用glFinish,完成当前帧内容的绘制并进行同步,因为GPU已经将之前的GL命令执行的差不多了,所以此方式对于GL冗长的情况执行效率比较高。

使用OpenGL渲染时,提高CPU效率的方式:

  (1)使用多线程。

  将更新和渲染作为线程A,辅助计算入AI(智能控制)策略、地图生成作为线程B。则当线程A因为glFinish阻塞时,开启线程B预先进行CPU计算。直到线程B完成后,根据B的结果做出相应的操作。

  (2)使用CPU时间预算方法。先给出一帧所需要的时间预算,然后在调用glFinish之前判断是否有更多的时间需要等待,如果有,则调用glFlush后,直接进行“辅助计算”,完成或者超过预算时间后,在调用glFinish。(此时GPU的渲染帧的所有命令已经绘制完毕,只需要一条glFinish进行同步处理)。

对于SwapBuffer的理解:

  SwapBuffer的命令指示把前台和后台的“缓冲区”指针交换了一下,即把前台的内容编程后台的内容,把后台的内容变换到了前台。但是,but,这个函数并不执行变换后的buffer清理工作。

  所以,绘制当前帧的OpenGL模式方法是:(1)每一帧的绘制之前都需要先调用一次glClear函数,然后在绘制当前帧的内容。(2)用GL命令绘制当前帧的内容,在这里已经考虑glFlush,GlFinish的各种优化,当前帧内容的GL命令的最后,需要执行glFinish以完成GL命令与当前帧绘制的所有同步工作,只须等待前后台的缓存交换执行显示。(3)在GL命令绘制后,最后调用一次SwapBuffer,进行前后台的显示。

对wglMakeCurrent的理解

  wglMakeCurrent 函数设定OpenGL当前线程的渲染环境。以后这个线程所有的OpenGL调用都是在这个hdc标识的设备上绘制。你也可以使用wglMakeCurrent 函数来改变调用线程的当前渲染环境,使之不再是当前的渲染环境。But,但是,正如上文所述,一般由多个DC,竞争使用一个RC,则在使用此函数获取一个DC后,本DC执行完毕后,需要在最后释放RC,不能独占RC

函数原型如下:

BOOL wglMakeCurrent(
HDC hdc, // device context of device that OpenGL calls are
// to be drawn on,设备环境(绘图上下文)的句柄。调用这个函数的线程接下来的所有OpenGL调用都将在这个hdc所标识的设备上绘制。指定当前线程。
HGLRC hglrc // OpenGL rendering context to be made the calling
// thread's current rendering context 函数设定的OpenGL渲染环境的句柄,作为当前线程的渲染环境。仅限定当前线程。
);
注意:如果hglrc为NULL,函数将使调用线程的当前渲染环境不再作为当前的渲染环境,并释放这个渲染环境所使用的设备环境。这种情况下hdc参数将被忽略。
// link the Win Device Context with the OGL Rendering Context
根据绘图设备上下文生成OGL的RC
m_hRC = wglCreateContext(m_pCDC->GetSafeHdc());
// specify the target DeviceContext (window) of the subsequent OGL calls
设置当前OGL的渲染环境RC对应的目标DC
wglMakeCurrent(m_pCDC->GetSafeHdc(), m_hRC);
// free the target DeviceContext (window),释放DC,供其他DC使用本RC
释放DC,从而其他的DC可以使用本RC
wglMakeCurrent(NULL,NULL);

注意:(1)hdc参数的绘制表面必须是支持OpenGL的。

  它不需是wglCreateContext 创建hglrc时所传进来的hdc,但它必须是相同的设备并具有相同的像素格式。GDI转换的hdc将不被渲染环境所支持。当前的渲染环境将一直使用hdc设备环境直到它不再是当前渲染环境。

  (2)在切换到新的渲染环境之前,OpenGL将冲刷掉当前调用线程之前的所有渲染环境。

  (3)一个线程可以有一个渲染环境(RC)。所以一个多线程的进程可以有多个渲染环境。一个线程在调用任何OpenGL函数之前必须设置一个当前渲染环境(RC)。否则所有OpenGL调用都将忽略,因为当前的RC没有可以执行GL命令的DC,必然被忽略。

  (4)在某一时刻渲染环境(RC)只能属于一个线程,你不能使一个渲染环境同时属于多个线程,因为RC只有一个。

  (5)一个应用程序可以通过不同线程中的不同的当前渲染环境(RC)产生多个绘图,它支持各个线程都拥有自己的渲染环境的设备环境(DC)

  (6)如果有错误发生,wglMakeCurrent 函数在返回之前将使渲染环境不作为线程当前的渲染环境。避免异常情况的独自占有情况。

在视图View创建之前,需要对设备环境,与当前线程的渲染环境进行设置:此外,也需要对OGL的全局设置进行处理,如开启深度缓存,设置背景颜色清除深度缓存信息。

 int CGLEnabledView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -) return -;
// OpenGL rendering context creation
PIXELFORMATDESCRIPTOR pfd;
int n;
// initialize the private member
m_pCDC= new CClientDC(this);//当前线程窗口对应的设备绘制上下文即DC
// choose the requested video mode
if (!bSetupPixelFormat()) return ;
// ask the system if the video mode is supported
n=::GetPixelFormat(m_pCDC->GetSafeHdc());
::DescribePixelFormat(m_pCDC->GetSafeHdc(),n,sizeof(pfd),&pfd);
// create a palette if the requested video mode has 256 colors (indexed mode)
CreateRGBPalette();
// link the Win Device Context with the OGL Rendering Context
m_hRC = wglCreateContext(m_pCDC->GetSafeHdc());  创建RC
// specify the target DeviceContext (window) of the subsequent OGL calls
wglMakeCurrent(m_pCDC->GetSafeHdc(), m_hRC);    设置当前RC对应的DC
// performs default setting of rendering mode,etc..
OnCreateGL();//OGL需要提前设置的配置属性。
// free the target DeviceContext (window)
wglMakeCurrent(NULL,NULL);               释放DC
return ;
}
 void CGLEnabledView::OnCreateGL()//执行的是对RC的全局设置
{
// perform hidden line/surface removal (enabling Z-Buffer)
glEnable(GL_DEPTH_TEST);
// set background color to black
glClearColor(.f,.f,.f,1.0f );
// set clear Z-Buffer value
glClearDepth(1.0f);
}

在View的OnDraw中,每次都要进行绘制处理,每次的处理流程都一样,这样用户只需要单独执行OnDrawGL();,就可以了,预设值以及善后就已经设置完毕。

void CGLEnabledView::OnDraw(CDC* pDC)
{
// prepare a semaphore 标志位
static BOOL bBusy = FALSE;
// use the semaphore to enter this critic section
if(bBusy) return;
bBusy = TRUE;
// specify the target DeviceContext of the subsequent OGL calls
wglMakeCurrent(m_pCDC->GetSafeHdc(), m_hRC);//只需执行的是切换功能,不需要执行耗时的创建过程
// clear background 清空缓存
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// call the virtual drawing procedure (to be overridden by user)
//模板方法模式
OnDrawGL();
// execute OGL commands (flush the OGL graphical pipeline)
//所有的绘制命令后,必须执行此GL的glFInish同步命令
glFinish();
// if double buffering is used it's time to swap the buffers,必须使用双缓存
if (m_bDoubleBuffer) SwapBuffers(m_pCDC->GetSafeHdc());
// turn the semaphore "green"
bBusy = FALSE;
// free the target DeviceContext (window),释放DC,供其他DC使用本RC
wglMakeCurrent(NULL,NULL);
}

View的onDestroy窗口销毁过程的动作:

void CGLEnabledView::OnDestroy()
{
OnDestroyGL();
// specify the target DeviceContext (window) of the subsequent OGL calls
wglMakeCurrent(m_pCDC->GetSafeHdc(), m_hRC);
// remove all display lists
for (int c=;c<MAX_LISTS;c++) if(m_DispListVector[c]) glDeleteLists(m_DispListVector[c],);
// release definitely OGL Rendering Context
if (m_hRC!=NULL) ::wglDeleteContext(m_hRC);
// Select our palette out of the dc
CPalette palDefault;
palDefault.CreateStockObject(DEFAULT_PALETTE);
m_pCDC->SelectPalette(&palDefault, FALSE);
// destroy Win Device Context
if(m_pCDC) delete m_pCDC;
// finally call the base function
CView::OnDestroy();
}

在MFC中实现视图中平移OGL中场景的思路

  OGL中的场景是客观存在的。为达到这一效果,可以通过控制视图窗口来实现。

  gllookat定义了观察坐标系VC在世界坐标系WC中的位置,其中定义了观察者的位置、观察的焦点、观察的正方向;

  glViewPort定义了视口的位置(Win窗口中的绘制区域位置,从裁剪投影体空间中【正交投影】【透视投影】)映射到窗口中的位置,像素为单位,默认窗口右下角为原点0,0,窗口的宽和高都作为默认视口值);

  glOrtho定义了正交投影的“裁剪体”的信息,在相对于观察者定义,即是在观察坐标系中的坐标。glPersertive也是观察者的坐标(相对观察者的位置)。

  (1)通过修改裁剪空间的位置,用鼠标控制,可以实现“OGL”鼠标点击平移效果

  在MFC中实现鼠标选择区域矩形,局部放大效果

  (1)鼠标左键UP相应函数中, 捕获两个点,像素位置;

  (2)转化为OGL中的世界坐标系WC中的点,获取OGL中的视图矩形VIEWRECT;

  (3)以,此VIEWRECT通过调整后,与原来的窗口视图保持相同给的横纵比,方式变形。然后将此VIEWRECT作为裁剪空间尺寸输出OGL命令。

  (4)在OnDraw中绘制,即可以显示出此效果。

  CWnd::OnSetCursor

  函数原型:afx_msg BOOL OnSetCursor( CWnd* pWnd, UINT nHitTest, UINT message );

  参数: pWnd 指定了包含光标的窗口指针。这个指针可能是临时的,不能被保存以供将来使用。 nHitTest 指定了击中测试区域代码。击中测试确定了光标的位置。 message 指定了鼠标消息。

  如果鼠标输入没有被捕获并且鼠标使光标在CWnd对象内移动,则框架调用这个成员函数。缺省的实现在处理之前调用父窗口的OnSetCursor。如果父窗口返回TRUE,则将停止进一步处理。调用父窗口使父窗口能够控制子窗口中光标的设置。如果光标不在客户区内,缺省的实现将光标设为箭头;如果是在客户区内,则将光标设为注册的类光标。

  最好的直接坐标系的视点位置:

  aaarticlea/png;base64,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" alt="" width="617" height="394" />

 

  

end:

openGL中的原理理解1---一个视图需要支持OGL需要配置,GLenbalView的理解的更多相关文章

  1. Uploadify在MVC中使用方法案例(一个视图多次上传单张图片)

    Controller 中代码和 上一节文章(http://www.cnblogs.com/yechangzhong-826217795/p/3785842.html )一样 视图中代码如下: < ...

  2. tableview中在tableheaderView上放一个视图,第一次进入视图显示不正常,往下拉视图仍然不正常,往上拉视图正常

    解决办法: frame来源不正常,从直接在viewDidLoad方法中设置的frame,改为 - (void)viewDidLayoutSubviews { [super viewDidLayoutS ...

  3. OpenGL中glPushMatrix和glPopMatrix的原理

    glPushMatrix.glPopMatrix操作事实上就相当于栈里的入栈和出栈. 很多人不明确的可能是入的是什么,出的又是什么. 比如你当前的坐标系原点在你电脑屏幕的左上方.如今你调用glPush ...

  4. Django内置auth模块中login_required装饰器用于类视图的优雅方式

    使用多继承 以及类似java中的静态代理模式 原理:OrderView.as_view()根据广度优先,调用的是LoginRequiredMixin中的as_view(cls, *args, **kw ...

  5. OpenGL中坐标系的理解(一)

    在OpenGL中,存在着至少存在着三种矩阵,对应着函数glMatrixMode()的三个参数:GL_MODELVIEW,GL_PROJECTION,GL_TEXTURE. 以下主要描述GL_MODEL ...

  6. OpenGL模型视图变换、投影变换、视口变换的理解

    OpenGL中不设置模型,投影,视口,所绘制的几何图形的坐标只能是-1到1(X轴向右,Y轴向上,Z轴垂直屏幕向外). 产生目标场景的过程类似于用照相机进行拍照: (1)把照相机固定在三角架上,并让他对 ...

  7. 计算机图形学OpenGL中的glLoadIdentity、glTranslatef、glRotatef原理,用法 .(转)

    单位矩阵 对角线上都是1,其余元素皆为0的矩阵. 在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的1,我们称这种矩阵为单位矩阵. 它是个方阵,除左上角到右下角的对角线(称为主对角线)上的元素 ...

  8. 关于opengl中的矩阵平移,矩阵旋转,推导过程理解 OpenGL计算机图形学的一些必要矩阵运算知识

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12166896.html 为什么引入齐次坐标的变换矩阵可以表示平移呢? - Yu Mao的回答 ...

  9. MVC怎么在当前视图中,传递参数给到另外一个视图?

    在TransData.cshtml视图中: <div> <!--在一个视图中,请求另外一个视图,并且将数据传到另外一个视图--> <!--视图中调用无返回值的方法,需要加 ...

随机推荐

  1. 64位windows 2003和windows xp

    msdn windows2003 64位简体中文企业版R2 sp2(cn_win_srv_2003_r2_enterprise_x64_with_sp2_vl) ed2k://|file|cn_win ...

  2. RK3288 GT触摸屏移植调试

    CPU:RK3288 系统:Android 5.1 IC:GT911 1.在 menuconfig 或者 rockchip_defconfig 中支持触摸屏.具体用哪种方式需要结合编译方法. 按照瑞芯 ...

  3. myeclipse修改内存大小不足

    工具中修改设置Default VM Arguments   1 打开MyEclipse,如下图所示 2 打开Windows-> Preferences 3 然后选择右侧菜单的Java->I ...

  4. 善待Erlang 代码 -- Xref 实践

    Xref 是一个交叉引用工具,通过分析定义的函数间的调用关系,用于查找函数. 模块. 应用程序和版本之间的依赖关系. 通俗而言,Xref 可以检查代码中函数的调用关系.比如在 moduleA 中的 f ...

  5. erlang的一些系统限制修改

    atom个数限制 +t xxx 进程数限制 +P xxxx ets表个数限制 +e xxx ports个数限制 +Q xxxx 查看限制 string:tokens(binary_to_list(er ...

  6. 转转转!!Spring MVC控制器用@ResponseBody声明返回json数据报406的问题

    本打算今天早点下班,结果下午测试调试程序发现一个问题纠结到晚上才解决,现在写一篇博客来总结下. 是这样的,本人在Spring mvc控制层用到了@ResponseBody标注,以便返回的数据为json ...

  7. C++实现大正整数及其相关运算(长期更新)

    /** 只考虑正数[1, +∞); “-”运算只允许大数减小数; 小端存储: */ typedef struct BigInteger0 { vector<int> v; BigInteg ...

  8. Creating an Android Project(创建一个android项目)

    一个android项目包含了你的应用程序中的所有源代码文件,我们可以通过android sdk tools轻松地创建一个拥有默认文件跟文件夹的android项目. 这部分课程我们将展示两种创建andr ...

  9. javascript中数组的强大用法·

    1 归并 var a = [{name: 'tom'},{name: 'aiscy'},{name: 'judy'},{name: 'mike'}];a.reduce(function(prev, i ...

  10. Python之单元测试框架unittest

    创建class继承unittest,每一个测试用例是以test开头的函数,先执行setup,然后用例按照字母的顺序执行,然后执行teardown import unittest class demo( ...