Ich studiere OpenGL mit GLUT und GLEW-Bibliothek. Aber ich habe eine Frage zum Setzen von einheitlichen Werten in den Fragment-Shader des Programms.Setzen von einheitlichen Werten in den Fragment-Shader (OpenGL)
Hier ist ein Teil des Fragment-Shader-Codes.
#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;
Ich möchte 'cameraPosition' und 'lightPosition' einheitliche Variablen setzen. Auch im Hauptprogramm habe ich etwas Code, um diese Variablen ID zu erhalten und einige Werte in die Variablen wie unten zu übergeben.
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]);
So versuche ich campos in camera zu passieren, und LightPos in lightPosition. ist es richtig oder falsch? Wenn Sie falsch denken, haben Sie eine Ahnung davon?
Okay, es ist jetzt klar, nachdem ich 1 statt 4 in die Zählung gegeben habe. Vielen Dank :): D: D – xpathz