我正在學習使用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