【发布时间】:2014-04-02 14:42:47
【问题描述】:
我是 OpenGL 编程新手,对 Qt 还很陌生。按照教程,我使用以下代码在我的 OpenGL Widget 中创建了两个三角形:
主窗口.cpp
void MainWindow::initializeGL() {
qDebug("initializing");
GLfloat verticies[] = {
+0.0f, +0.0f,
+1.0f, +1.0f,
-1.0f, +1.0f,
-1.0f, -1.0f,
+1.0f, -1.0f
};
GLuint vertexBufferID;
glGenBuffers(1, &vertexBufferID);
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferID);
glBufferData(GL_ARRAY_BUFFER, sizeof(verticies), verticies, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0);
GLushort indices[] = {
0, 1, 2,
0, 3, 4
};
GLuint indexBufferID;
glGenBuffers(1, &indexBufferID);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferID);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
glClearColor(0, 0, 0, 1);
}
void MainWindow::paintGL() {
qDebug("painting");
//glViewport(0, 0, width(), height());
glClear(GL_COLOR_BUFFER_BIT);
//glDrawArrays(GL_TRIANGLES, 0, 6);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
}
奇怪的是,这段代码运行良好,但只有在我调整窗口大小时才会显示:
调整大小之前:
调整大小后:
initializing 和 painting 在调整大小之前都输出到控制台,因此它们被调用。
调整大小会导致三角形显示什么?
如果有什么不同,我正在使用 Mac OSX (Mavericks)。
【问题讨论】: