Tôi đã đọc một vài hướng dẫn cơ bản về trình đổ bóng. Cho đến nay họ đã trình bày cách thiết lập các biến trong trình đổ bóng của bạn. Nhưng điều này chỉ là về ints, float hoặc vectơ. Tôi không thể tìm thấy bất cứ điều gì về làm thế nào để thiết lập một biến mat4. Trình đổ bóng của tôi hy vọng như sau:Đặt mat4 trong OpenGL
uniform vec3 CameraPos;
uniform mat4 ModelWorld4x4;
Vị trí máy ảnh và ma trận thế giới của mô hình. Tôi nghĩ rằng tôi có quyền CameraPos, nhưng làm thế nào trên trái đất để tôi thiết lập các biến ModelWorld4x4 ??
Đây là cách tôi đặt vector3
campos = glGetUniformLocation(shader.id(), "CameraPos");
glUniform3f(campos, 0.0f, 0.0f, 3.0f);
Đây là (một trong những phương pháp) làm thế nào tôi đã cố gắng để thiết lập các mat4
glGetFloatv(GL_MODELVIEW_MATRIX, modelworld);
modelw = glGetUniformLocation(shader.id(), "ModelWorld4x4");
glUniformMatrix4fv(g_modelworld4x4, modelworld); // Not working
Tôi đang sử dụng thư viện Assimp để tải một mô hình, vì vậy hiện tại ma trận thế giới được lưu trữ trong cấu trúc aiMatrix4x4.
// world matrix of the model
aiMatrix4x4 m = nd->mTransformation;
// Save in a global variable
g_modelworld4x4 = m;