【发布时间】:2017-05-27 20:04:22
【问题描述】:
我正在使用 GLUT 和 GLEW 库研究 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。 它是正确的还是不正确的?如果您认为不正确,您对此有什么想法吗?
【问题讨论】:
标签: opengl