1
我正在使用Qt创建一个简单的Sprite编辑器与OpenGL,但图像只是不显示,它只是一个白色的四边形在屏幕上。Qt OpenGL纹理将不会出现
我检查了我的代码,我认为一切正常。四是图像的尺寸相同,并纹理ID不为0
这里是我的代码:
初始化:
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisable(GL_CULL_FACE);
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, win_width, win_height, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
纹理加载:
QImage b = QImage(filename);
m_texture = QGLWidget::convertToGLFormat(b);
glGenTextures(1, &m_id);
glBindTexture(GL_TEXTURE_2D, m_id);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA,
m_texture.width(),
m_texture.height(),
0, GL_RGBA, GL_UNSIGNED_BYTE,
m_texture.bits());
渲染:
glClearColor(0.1f, 0.1f, 0.1f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glBindTexture(GL_TEXTURE_2D, m_id);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex2i(0, 0);
glTexCoord2f(1.0f, 0.0f);
glVertex2i(m_texture.width(), 0);
glTexCoord2f(1.0f, 1.0f);
glVertex2i(m_texture.width(), m_texture.height());
glTexCoord2f(0.0f, 1.0f);
glVertex2i(0, m_texture.height());
glEnd();
glBindTexture(GL_TEXTURE_2D, 0);
仍然不能工作! – dcubix
打印opengl版本时会说些什么?即glGetString(GL_VERSION)和glGetString(GL_SHADING_LANGUAGE_VERSION) – faraza
@faraza 'Version:2.1.0 - Build 8.15.10.2900' '底纹语言版本:1.20 - 英特尔生成8.15.10.2900' – dcubix