在Qt中用OpenGL显示16位医学图像遇到的图像显示为黑色的问题

      最近,在Qt中,使用OpenGL显示16位的医学图像,之前一直准备用Windows Forms实现,但是弄了一个月,硬是没弄出来。只好转到Qt的平台上。

      在Qt中使用OpenGL的资料很多,就是重新实现QGLWidget这个类,由于是要用OpenGL显示16位的医学图像,因此涉及到窗宽窗位的调整问题,我采用查找表的方法实现。具体的方法是,在OpenGL中定义一个一维纹理,并结合GLSL语言。但是最终显示的图像为黑色,也没法调整窗宽窗位,在网上搜寻类似的问题,只有在网页http://www.gamedev.net/topic/604091-openglqt-with-shaders-no-texture/找到了一点信息,里面提到需要定义函数:glActiveTexture(GL_TEXTURE0)。但是Qt中并没有这个函数,我添加了glew.h这个函数,但是会报错,只好放弃这个想法。

 

     在苦恼了一会后,无意中发现了这个网页https://github.com/openwebos/qt/blob/master/examples/opengl/cube/mainwidget.cpp。里面就用到了glActiveTexture(GL_TEXTURE0)。但是其包含的头文件中,并没有其他的函数。最后,还是在无意中注意到了QGLFunctions这个类,这个类的定义里面包含了glActiveTexture()的定义,而使用方法只需将窗口在继承QGLWidget的同时,继承QGLFunctions即可,再次调试程序发现,问题已经得到解决!^_^

posted @ 2013-06-25 19:53  ppffs  阅读(1637)  评论(0编辑  收藏  举报