gpt4 book ai didi

C++ OpenGL ES 2.0 矩阵变换——新手

转载 作者:行者123 更新时间:2023-11-30 04:28:12 24 4
gpt4 key购买 nike

我正在尝试开发 OpenGL ES 2.0,我几乎是一个 OpenGL 新手。我有一个简单的程序,目前只在原点绘制一个红色方 block ,我想使用矩阵将其从原点移动到屏幕中心。我相信到目前为止我所做的一切都是正确的,但我一定遗漏了一些东西,因为当我将矩阵应用于着色器时,我只是得到一个空白屏幕。

着色器:

const char vShaderStr[] = "attribute vec4 a_position; \n"
"attribute vec4 a_colour; \n"
"varying vec4 v_colour; \n"
"uniform mat4 u_transformation; \n"
"void main() \n"
"{ \n"
" v_colour = a_colour; \n"
" gl_Position = u_transformation * a_position; \n"
"} \n";
const char fShaderStr[] = "varying vec4 v_colour; \n"
"void main() \n"
"{ \n"
" gl_FragColor = v_colour; \n"
"} \n";

创建矩阵并发送到着色器:

transformationMatrix = glGetUniformLocation(programObject, "u_transformation");
...
GLfloat vMatrix[] = {
0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f,
0.0f, 0.0f, 0.0f, 0.0f,
-0.5f, -0.5f, 0.0f, 1.0f,
};
glUniformMatrix4fv(transformationMatrix, 1, GL_FALSE, vMatrix);

在将矩阵发送到着色器之前,我是否必须对其进行一些数学运算?如果是这样怎么办?对于这里的大多数人来说,我觉得我遗漏了一些显而易见的东西。

最佳答案

您的矩阵可能是错误的。假设其他一切都设置正确,这将是正确的矩阵:

GLfloat vMatrix[] = {
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
-0.5f, -0.5f, 0.0f, 1.0f,
};

关于C++ OpenGL ES 2.0 矩阵变换——新手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347417/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com