openGL 函数能正常执行,但是没有结果,该怎么办?方法之一

来源:互联网 发布:mysql集群架构 编辑:程序博客网 时间:2024/05/22 11:57

        在编写openGL函数时,由于不熟悉或者理解不深刻,导致很多莫名其妙的问题。

        比如,当你经过千辛万苦,终于d编译成功以后,excute  it!偷笑却发现会出现cannot read 内存什么什么的。很明显,指针越界了。大哭

        我们不甘心,抓狂但我们不能放弃。单步调试!

        结果 发现利用openGL函数来获取某些函数或者字符串时出现了空指针的情形!

      比如 glTexImage3D = (PFNGLTEXIMAGE3DPROC) ::wglGetProcAddress("glTexImage3D")时; 跟踪发现 glTexImage3D=Null;

    比如  char* str1 = 0;   str1 = (char*)glGetString(GL_VERSION); 时,跟踪发现 str1=Null;

    

  哈哈,问题找到了 吐舌头,这样的话,访问glTexImage3D或者str1,那就肯定越界了哈。


   但是原因是是什么?明明编译没错,明明能够往下正常执行,但就是没有正确结果输出?


在网上找了半天:在 http://tech.groups.yahoo.com/group/opengl-gamedev-l/message/10613里找到答案!快哭了

一句话:在你调用这些gl函数之前,你需要初始化渲染的上下文(rendering context)!!!

那么所以,当你在非MFC情况下(比如控制台程序时),先调用glutInit与glutCreateWindow进行初始化,然后调用相关gl函数,就可以返回正确的值了。

MFC情况下,先调用wglMakeCurrent()进行初始化后,再调用就可以返回正确的值了。

OK!问题解决!





     

    

原创粉丝点击