Tôi có cảnh bằng một hình tam giác đơn giản. Và tôi đang sử dụng phép chiếu phối cảnh. Tôi đã thiết lập ma trận MVP của mình (với sự trợ giúp của GLM) như sau:Thay đổi Từ Phối cảnh sang Ma trận Chỉnh hình
glm::mat4 Projection = glm::perspective(45.0f, 4.0f/3.0f, 0.1f, 100.0f);
glm::mat4 View = glm::lookAt(
glm::vec3(0,0,5), // Camera is at (0,0,5), in World Space
glm::vec3(0,0,0), // and looks at the origin
glm::vec3(0,1,0) // Head is up (set to 0,-1,0 to look upside-down)
);
glm::mat4 Model = glm::mat4(1.0f);
glm::mat4 MVP = Projection * View * Model;
Và mọi thứ đều ổn, tôi có thể thay đổi giá trị của máy ảnh và hình tam giác vẫn hiển thị đúng cách.
Nhưng tôi muốn sử dụng phép chiếu chính xác. Và khi tôi thay đổi ma trận chiếu thành orthographic, nó hoạt động không thể đoán trước, tôi không thể hiển thị hình tam giác, hoặc tôi chỉ thấy một phần nhỏ của nó ở góc màn hình. Để sử dụng phép chiếu chính xác, tôi thực hiện điều này:
glm::mat4 Projection = glm::ortho(0.0f, 800.0f, 600.0f, 0.0f,-5.0f, 5.0f);
trong khi tôi không thay đổi bất kỳ thứ gì trong ma trận Xem và Mô hình. Và tôi không hoạt động đúng cách.
Tôi chỉ cần đẩy theo đúng hướng, tôi có đang làm gì sai không? Tôi đang thiếu gì, tôi nên làm gì để thiết lập đúng cách chiếu chiếu?
PS tôi không biết nếu nó là cần thiết, nhưng đó là những tọa độ của tam giác:
static const GLfloat g_triangle[] = {
-1.0f, 0.0f, 0.0f,
1.0f, 0.0f, 0.0f,
0.0f, 2.0f, 0.0f,
};
@Nico_Schertler Cảm ơn, tôi thực sự ngu ngốc: \ Đã làm việc! nếu tôi có thể hỏi bạn chỉ một điều nữa - tôi đã cố gắng loại bỏ hoàn toàn mô hình và xem ma trận và mọi thứ vẫn được hiển thị đúng cách! Tôi có cần chỉ ma trận chiếu khi tôi đang sử dụng phương pháp chỉnh hình không? Xin lỗi nếu câu hỏi có chút khó hiểu, tôi mới bắt đầu với OpenGL vài ngày trước. Cảm ơn rất nhiều! – IanDess
Hệ tọa độ không được định dạng mặc định là trên cùng bên trái (-1,1), dưới cùng bên phải (1, -1). z-phối hợp phụ thuộc vào việc bạn sử dụng một hệ thống tọa độ RH hoặc LH. Nếu mức độ này phù hợp với nhu cầu của bạn, bạn có thể để ma trận chiếu tại danh tính và chỉ sử dụng ma trận chế độ xem để điều hướng cảnh. Nếu không, bạn có thể sử dụng ma trận chiếu để mở rộng khung cảnh, v.v. –