OpenGL顶点着色器:奇怪的矩阵转换
OpenGL vertex shader: weird matrix translation
我正在尝试使用矩阵基于时间移动三角形。但是它做了一些奇怪的事情:
它应该做什么:在x轴上移动
作用:三角形的顶部点是固定的,其他点似乎以圆形运动围绕它移动,并在x, z轴上缩放(我仍然在2d中,所以我没有深度)。
My c++ Code:
...
GLfloat timeValue = glfwGetTime();
GLfloat offset = (sin(timeValue * 4) / 2);
GLfloat matrix[16] = {
1, 0, 0, offset,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1
};
GLuint uniform_m_transform = glGetUniformLocation(shader_program, "m_transform");
glUniformMatrix4fv(uniform_m_transform, 1, GL_FALSE, matrix);
...
顶点着色器:
#version 330 core
layout (location = 0) in vec3 position;
layout (location = 1) in vec3 color;
out vec3 ourColor;
uniform mat4 m_transform;
void main()
{
ourColor = color;
gl_Position = m_transform * vec4(position, 1.0);
}
我不知道我做错了什么,根据教程,矩阵属性我已经设置为偏移应该改变x平移。
你知道我错在哪里吗?
您正在提供一个行为主矩阵,因此您需要指定转置:
glUniformMatrix4fv(uniform_m_transform, 1, GL_TRUE, matrix);
参考:glUniform,检查转置参数
相关文章:
- 如何循环打印顶点结构
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 将 std::顶点结构的矢量转换为浮点数*
- 如何在C++中将边列表转换为邻接矩阵,其中包含连接到顶点的边数而不是一条边?
- 如何将每个顶点的颜色转换为时间或某些功能
- 用c++将双精度和顶点句柄转换为字符串
- 不明白顶点着色器转换
- 从视口坐标转换为[-1,1]^2顶点[ENGGL]
- 在“顶点着色器”中将法线转换为视图空间
- 将顶点坐标转换为屏幕坐标"same"
- DirectX 11-使用AVX的AoS到SoA转换导致重映射时顶点缓冲区损坏
- OpenGL顶点着色器:奇怪的矩阵转换
- 如何在不破坏网格缠绕顺序的情况下将Z-Up顶点转换为Y-Up顶点.(DX9c)
- 将地图转换为顶点索引不起作用
- 顶点缓冲区中的数据在转换后会改变吗?