我正在学习使用GLUT和GLEW库的OpenGL。 但我有一个关于在程序的片段着色器中设置统一值的问题。将统一值设置为片段着色器(OpenGL)
以下是片段着色器代码的一部分。
#version 110
uniform vec4 cameraPosition;
uniform vec4 lightPosition;
varying vec4 fragColor;
varying vec4 fragNormal;
varying vec4 fragPosition;
void main() {
vec4 L = lightPosition - fragPosition;
vec4 V = cameraPosition - fragPosition;
我想要做的是设置'cameraPosition'和'lightPosition'统一变量。 另外,在主程序中,我放了一些代码来获取这些变量ID并将一些值传递给下面的变量。
GLuint cameraPositionID = glGetUniformLocation(programID, "cameraPosition");
GLuint lightPositionID = glGetUniformLocation(programID, "lightPosition");
GLfloat camPos[4] = { 1, 1, -3, 1 };
GLfloat lightPos[4] = { 1, 0, 0, 1 };
glUniform4fv(cameraPositionID, 4, &cameraPos[0]);
glUniform4fv(lightPositionID, 4, &lightPos[0]);
因此,我尝试将camPos传递到cameraPosition,并将lightPos转换为lightPosition。 它正确或不正确?如果你认为不正确,你有什么想法吗?
好吧,现在清楚了,我把1放入count后,而不是4.非常感谢:) D:D – xpathz