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