- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试渲染图像并使用 glTranslate 对其进行偏移:
glPushMatrix();
glTranslatef(x, y, 0.0f);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
glPopMatrix();
我也在使用着色器,在顶点着色器中我设置了顶点的位置:
in vec2 position;
in vec3 color;
out vec3 Color;
void main() {
Color = color;
gl_Position = vec4(position, 0.0, 1.0);
}
但是,这始终会在同一位置呈现正方形。我在想这是因为位置 vector 总是相同的。我怎样才能使用这个着色器,但仍然能够使用 glTranslate 移动图像?我怀疑我必须更改我的着色器输入,但如何更改?
最佳答案
glTranslatef 更改 MVP 矩阵,该矩阵作为统一传递到顶点着色器。使用
在 pre 150 中有一个快捷方式gl_Position = ftransform();
它将变换矩阵应用到输入位置,因为它是通过 glVertex*
传入的。
但是 glsl 150 核心不允许使用那个制服或那个函数。而是创建一个矩阵统一并将其传入:
#version 150 core
in vec2 position;
in vec3 color;
out vec3 Color;
uniform mat4 mvp;
void main() {
Color = color;
gl_Position = mvp * vec4(position, 0.0, 1.0);
}
关于c++ - Vertexshader 中的位置 vector 与 glTranslate 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641990/
是否可以对要使用计算着色器渲染的几何数据应用过滤器,然后将结果用作顶点着色器中的输入缓冲区?这将节省我读回数据的麻烦(和时间)。 非常感谢任何帮助。 最佳答案 是的,绝对是的。首先,使用 BIND_V
为什么第一个代码有效,但第二个代码无效?代码在顶点着色器中。 第一个代码: gl_Position = ProjectionMatrix * ViewMatrix * ModelMatrix * ve
仅当高度为零时,如何为网格设置颜色? 至于现在,我只是混合了颜色: 问题是这种混合并不精确。我只在高度为零时才想要蓝色(所以只在我用油漆制作的红色路径内)。 我为网格创建了一个自定义 Material
我发现它们之间明显不匹配,但我不明白为什么或如何它们不匹配。我已经看了这么久了,现在什么也看不见了,所以也许多看几双眼睛...... Here are the members of the verte
我尝试编译一些像素着色器示例。但是它们都给出相同的错误信息。 “不能将着色器模型 3.0 与早期着色器模型混合使用。如果顶点着色器或像素着色器编译为 3.0,则它们必须都是。” 问题似乎是像素着色器使
我正在尝试渲染图像并使用 glTranslate 对其进行偏移: glPushMatrix(); glTranslatef(x, y, 0.0f); glDrawElements(GL_TRIANGL
我目前正在 Qt 中基于 QOpenGLWidget 开发 OpenGL-Widget。我遵循了一些示例并使用 GLSL-Wrapper 进行演示。出于兼容性目的,应用程序本身应尽可能独立,例如更改
我正在学习 OpenGL 教程 here .它在我的 Arch Linux 系统上运行良好,但在 Windows 上运行不佳。 我的顶点和片段着色器代码与示例中的完全一样: 片段着色器代码: #ver
我是一名优秀的程序员,十分优秀!