Tôi đang cố gắng cập nhật vị trí mắt trong trình đổ bóng của tôi từ sự tán thành của tôi nhưng tôi vẫn nhận được lỗi 1281 khi tôi thử điều này. Tôi không có vấn đề gì sau khi khởi tạo chỉ khi tôi sau đó cố gắng cập nhật các giá trị. Đây là mã của tôi:Làm thế nào để cập nhật một biến thống nhất trong GLSL
trống GraphicsObject :: SendShadersDDS (char vertFile [], char fragFile [], char filename []) {
char *vs = NULL,*fs = NULL;
vert = glCreateShader(GL_VERTEX_SHADER);
frag = glCreateShader(GL_FRAGMENT_SHADER);
vs = textFileRead(vertFile);
fs = textFileRead(fragFile);
const char * ff = fs;
const char * vv = vs;
glShaderSource(vert, 1, &vv, NULL);
glShaderSource(frag, 1, &ff, NULL);
free(vs); free(fs);
glCompileShader(vert);
glCompileShader(frag);
program = glCreateProgram();
glAttachShader(program, frag);
glAttachShader(program, vert);
glLinkProgram(program);
glUseProgram(program);
LoadCubeTexture(filename, compressedTexture);
GLint location = glGetUniformLocation(program, "tex");
glUniform1i(location, 0);
glActiveTexture(GL_TEXTURE0);
EyePos = glGetUniformLocation(program, "EyePosition");
glUniform4f(EyePos, EyePosition.X(),EyePosition.Y(),
EyePosition.Z(), 1.0);
DWORD bob = glGetError();
//All is fine here
glEnable(GL_DEPTH_TEST);
}
Và đây là chức năng tôi gọi để cập nhật vị trí mắt:
void GraphicsObject :: UpdateEyePosition (Vector3d & eyePosition) {
glUniform4f(EyePos, eyePosition.X(),eyePosition.Y(),
eyePosition.Z(), 1.0);
DWORD bob = glGetError();
//bob equals 1281 after this call
}
Tôi đã thử một vài cách hiện nay của việc cập nhật biến và điều này là hiện thân mới nhất, nhờ để xem, tất cả các ý kiến hoan nghênh.
UPDATE: Các lỗi không thực sự xảy ra ở đây cả, lỗi của tôi cho giả định đó là, lỗi thực sự xảy ra khi tôi rút ra một số mùa xuân:
for (int i = 0; i < 2; i ++) {
springs[i].Draw();
}
khi tôi vẽ cái đầu tiên đó là tốt nhưng tôi nhận được một lỗi khi gọi thứ hai tại điểm mà gọi glEnd() để đáp ứng với glBegin (GL_LINE_STRIP). Xin lỗi vì sự bất tiện vì nó không phải là lỗi tôi đã đăng nhưng ít nhất nếu có ai muốn biết cách cập nhật các biến thống nhất thì nó ở đây.
tôi vẫn nhận được một lỗi, tôi đã làm điều đó để bắt đầu với. – paj777
Bạn gặp phải lỗi gì? Và lỗi này có xuất phát từ glGetUniformLocation hay glUniform4f không? – Goz
Giá trị EyePos là bao nhiêu? – Bahbar