我试图将整个二维三角形场景放入窗口。我正在使用着色器程序来处理绘制三角形。我只期望看到900个三角形中的一小部分。但是,当我使用已弃用的OpenGL API在类似场景中绘制方块时,它会按预期工作。
它必须与我传递到顶点着色器的MVP矩阵有关。请参阅paintGL()
模块中的scene.cpp方法。这是我在绘制三角形之前设置glViewport
和mvpMatrix
的地方。
我概述了我在下面所做的事情。
这是triangles演示的屏幕截图。
paintGL
方法。我发现使用已弃用的OpenGL API,使用GL_QUADS绘制正方形,可以满足我的需求。但是,我想使用着色器。
这是squares演示的屏幕截图。它是1M x 1M场景中的10 x 10格的网格。
我发现了这个bug。我在triangles.cpp分配了VBO。我使用了错误的字节数。
更改:
_vertexBuffer.allocate(_vertexes, _vertexCount);
至:
_vertexBuffer.allocate(_vertexes, _vertexCount * sizeof(QVector3D));
解决了这个问题。