Matrix QT OpenGL正在将我的向量绘制到无穷远

Matrix QT OpenGL正在将我的向量绘制到无穷远,matrix,vector,Matrix,Vector,我想在OpenGL和Qt5.5中创建一个简单的线立方体。 问题是,如果我画一条简单的线到另一个Z坐标(从Z-1.0f到z1.0f),这条线看起来像是到了Z=无穷大 Vertex stackVerts[] = { {QVector3D(-1.0f, -1.0f, 1.0f), // 0 QVector3D(+1.0f, +0.0f, +0.0f)}, // Colour {QVector3D(1.0f, -1.0f, 1.0f), // 1

我想在OpenGL和Qt5.5中创建一个简单的线立方体。 问题是,如果我画一条简单的线到另一个Z坐标(从Z-1.0f到z1.0f),这条线看起来像是到了Z=无穷大

Vertex stackVerts[] = {
        {QVector3D(-1.0f, -1.0f, 1.0f), // 0
        QVector3D(+1.0f, +0.0f, +0.0f)}, // Colour

        {QVector3D(1.0f, -1.0f, 1.0f), // 1
        QVector3D(+0.0f, +1.0f, +0.0f)}, // Colour

        {QVector3D(-1.0f, 1.0f, 1.0f), // 2
        QVector3D(+0.0f, +0.0f, +1.0f)}, // Colour

        {QVector3D(1.0f, 1.0f, 1.0f), // 3
        QVector3D(+1.0f, +1.0f, +1.0f)}, // Colour

        {QVector3D(-1.0f, -1.0f, -1.0f), // 4
        QVector3D(+1.0f, +0.0f, +0.0f)}, // Colour

        {QVector3D(1.0f, -1.0f, -1.0f), // 5
        QVector3D(+0.0f, +1.0f, +0.0f)}, // Colour

        {QVector3D(-1.0f, 1.0f, -1.0f), // 6
        QVector3D(+0.0f, +0.0f, +1.0f)}, // Colour

        {QVector3D(1.0f, 1.0f, -1.0f), // 7
        QVector3D(+1.0f, +1.0f, +1.0f)}, // Colour

};
GLushort stackIndices[] = {
    0,1,
    1,3,
    3,2,
    2,0,
    0,4,
};
...
glDrawElements(GL_LINES, 10, GL_UNSIGNED_SHORT, 0);
矩阵设置为统一的:

_transMatrix.setToIdentity();
_transMatrix.perspective(60.0f, (float)(width()/height()), 0.1f, 100.0f);
_transMatrix.translate(0, 0, -3);
_transMatrix.rotate(64,0,1,0);
_program.setUniformValue("transMatrix",  _transMatrix);
Vertex.glsl:

#ifdef GL_ES
// Set default precision to medium
precision mediump int;
precision mediump float;
#endif

attribute vec3 a_position;
attribute vec3 a_color;

uniform mat4 transMatrix;

varying vec3 theColor;
void main()
{
    vec4 v = vec4 (a_position, 1.0);
    gl_Position = v * transMatrix;
    theColor = a_color;
}
GL_DEPTH_测试已启用,如果我将z的平移更改为-1000,它仍将变为无穷大