OpenGL技术之摆脱GLUT的束缚

本文详细介绍了如何在OpenGL编程中摆脱GLUT,独立创建渲染上下文。内容涵盖像素格式的设定、渲染上下文的创建及渲染过程的相关设置,适合进阶学习者参考。
摘要由CSDN通过智能技术生成

作者:i_dovelemon

日期:2017-03-12

来源:CSDN

主题:OpenGL, Render Context



引言



        才开始学习OpenGL的同学,大部分都是通过使用GLUT来进行学习的。确实,GLUT为我们简化了很多的工作,使得我们能够专心的学习OpenGL相关的知识,而忽略和操作系统相关的操作。但是,当我们需要自己管理操作系统的相关操作的时候,GLUT的限制就出现了,所以今天,我们就来讲讲如何在不使用GLUT的情况下,在Windows上自行管理窗口,使用OpenGL进行绘制。


渲染上下文(Render Context)



        OpenGL的所有调用命令都是在一个渲染上下文中进行的,而创建渲染上下文的API并不是由OpenGL标准来定义,而是由具体的操作系统平台来定义的。如果你想要使用OpenGL进行绘图的操作,你就必须要创建一个绘图上下文,然后通过对应操作系统的API将上下文中绘制的东西显示到屏幕上。


像素格式(Pixel Format)



        当我们用OpenGL渲染上下文进行渲染的时候,我们需要为显示的像素指定格式,然后询问操作系统,此种格式是否被支持,如果支持就使用该格式,反之则使用与之相近的格式进行设置。

        在windows平台,这个描述像素格式的结果为: PIXELFORMATDESCRIPTOR


设置像素格式



        在Window平台上,绘制图像一般是通过GDI接口中的设备上下文(Device Context, DC)来进行的。所以,如果寻求像素,设置像素格式自然需要通过它来进行。

        当我们创建了窗口之后,我们就能够通过 GetDC(HWND)函数来获取相对应的设备上下文。后面我们只要通过如下的函数调用来询问,设置像素格式即可:

    g_DC = GetDC(g_Hwnd);

    // Set surface pixel format
    PIXELFORMATDESCRIPTOR pixel_desc;
    pixel_desc.nSize = sizeof(pixel_desc); //WORD  nSize;
    pixel_desc.nVersion = 1; //WORD  nVersion;
    pixel_desc.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;//DWORD dwFlags;
    pixel_desc.iPixelType = PFD_TYPE_RGBA; //BYTE  iPixelType;
  
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值