Sau khi tìm kiếm và đọc về OpenGL hiện đại để nâng cấp dự án hiện tại của tôi, tôi hơi bối rối vì khung 3D của tôi dựa trên OpenGL 2.1.OpenGL hiện đại: VBO, GLM và Ma trận Stacks
như vậy, như xa như tôi tìm hiểu ...
Chúng tôi cần phải tạo ra của chúng tôi Vertex-đệm-Objects từ đỉnh, chỉ số, normals, màu sắc, UVs vv
sau đó chúng ta có thể sử dụng GLM cho chuyển đổi ma trận, và chúng tôi chỉ sử dụng VBO để tạo ra hoặc thao tác mắt lưới, cuối cùng chúng tôi vượt qua tất cả mọi thứ vào GLSL vertex như thế này ...
glm::mat4 MVP = projection * view * model; glUniformMatrix4fv(glGetUniformLocation(shaderProgramID, "MVP"), 1, GL_FALSE, glm::value_ptr(MVP)); //or &MVP[0][0] // uniform mat4 MVP; // in vec3 Vertex; // void main(void) // { // gl_Position = MVP * vec4(Vertex, 1.0); //instead of ftransform(); // }
CÂU HỎI: Cách chúng tôi thực hiện các phép biến đổi phân cấp mà không có pushMatrix/popMatrix? (hoặc có thể chúng tôi thực hiện chuyển đổi phân cấp bằng cách sử dụng các VBO của chúng tôi, có thể không?)
Nếu không, thì làm cách nào để đạt được kết quả tương tự như pushMatrix/popMatrix bằng cách sử dụng thư viện GLM và C++ < stack?
phép nói rằng tôi cần một cái gì đó như thế này:
> Set identity
> Translate to X, Y, Z
> Draw Mesh 1
> Rotate 0.5 by X axis
> Draw Mesh 2
> Scale down to 0.1
> Draw Mesh 3
@ BЈовић: [OpenGL Toán học (GLM)] (http://glm.g-truc.net/), thư viện C++ tiêu đề chỉ dành cho ma trận/toán học vector. – genpfault