矩阵错误 LWJGL



我制作了这个小游戏引擎,但是当我在着色器GLSL位置设置矩阵时,它被它取消了,并且显示任何图像...这里 GLSL 程序:

            "#version 450 coren" +
                "layout(location=0) in vec2 in_Position;n" +
                "layout(location=0) uniform mat4 uni_Model;n" +
                "void main() {n" +
                "   gl_Position = uni_Model * vec4(in_Position, 0.0f, 1.0f);n" +
                "}";

这是我的矩阵:

            Matrix4f matrix = new Matrix4f();
        matrix.translate(new Vector3f(0.0f, 0.0f, 0.0f)); // I know it don't translate anything, it was just a test
        matrix.scale(new Vector3f(1.0f, 1.0f, 1.0f)); // I know it don't scale anything, " " "
        FloatBuffer modelBuffer = FloatBuffer.allocate(16);
        matrix.store(modelBuffer);
        glUniformMatrix4fv(0, false, modelBuffer); // 0 is the location of the uniform

如果我从 GLSL 和 Java 代码中删除矩阵,程序工作正常,这意味着矩阵具有空值并取消gl_Position值。最后这是我的输出:https://gyazo.com/99bddae6e7dbf8165940e15632d41e83我清除每帧蓝色的屏幕。

我解决了!问题是我忘了打电话modelBuffer.flip()只是替换它,它给了我一个本机错误。所以我在 FloatBuffer 初始化中发现了另一个问题:我用 BufferUtils.createFloatBuffer(16) 替换了FloatBuffer.allocate(16),现在一切正常:)

相关内容

  • 没有找到相关文章