Mục đích của glNormal3f trong OpenGL ES là gì? Nếu không có chế độ ngay lập tức có sẵn trong OpenGL ES, cho những gì tôi sẽ sử dụng glNormal3f? Mã ví dụ sẽ đẹp.Mục đích của glNormal3f trong OpenGL ES là gì?
Trả lời
Tôi nghĩ rằng đó là vì lý do tương tự mà có một hàm glColor. Nếu bình thường của toàn bộ hình học của bạn là giống nhau cho tất cả các đỉnh bạn có thể chỉ định nó với glNormal trước khi gọi glDrawArrays/glDrawElements.
Lý do duy nhất tôi có thể nghĩ là nó ở đó để hỗ trợ biểu diễn hiệu quả các bề mặt có nhiều đỉnh chia sẻ cùng một bình thường. Với phương pháp dựa trên mảng, bạn phải tạo một mảng có cùng giá trị được lặp lại cho mỗi đỉnh, làm lãng phí bộ nhớ.
Tôi thấy nó tò mò rằng manual page (OpenGL ES 1.1, ở đó) thậm chí không đề cập đến nó. Tôi đã tìm thấy một số iPhone programming tutorial (PDF) thậm chí còn tuyên bố glNormal()
không còn ở đó nữa.
Bởi "nơi có nhiều đỉnh chia sẻ cùng một bình thường", bạn có nghĩa là "nơi tất cả các đỉnh được vẽ trong một lệnh gọi' glDrawArrays' có chung một bình thường không? " Đó có phải là một sự hiểu biết chính xác về nó? – Gravity
OpenGL ES 1.1 không đề cập đến nó nhưng có đó là lỗi trong hướng dẫn lập trình iPhone.
Bạn không được phép sử dụng các chức năng này nữa. Dính vào glXXXXArray(). Tôi nghi ngờ rằng họ chỉ là trái overs treo ở đó để làm cho OpenGL để OpenGL ES chuyển dễ dàng hơn.
Trong OpenGL | ES glNormal3f() không phải là một hàm phản đối,
vì nó rất hữu ích cho rendering phẳng 2D hình dạng trong {X, Y} máy bay:
thay vì sử dụng:
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, vbuf + normal_offset);
nó là đơn giản và nó đòi hỏi ít bộ nhớ VBO gọi:
glNormal3f(0, 0, 1);
vui lòng đọc phần trợ giúp định dạng để hiểu cách gắn thẻ mã :-) – kleopatra
- 1. Mặt chính xác của OpenGL ES hoặc Direct3D là gì?
- 2. mục đích là gì? "::" trong
- 3. Mục đích của tệp pdb là gì?
- 4. Mục đích của tệp vshost.exe là gì?
- 5. Mục đích của layout.xml là gì?
- 6. Mục đích của `__metaclass__ = type` là gì?
- 7. Mục đích của String.IsInterned là gì?
- 8. Mục đích của Rake là gì?
- 9. Mục đích của __cxa_pure_virtual là gì?
- 10. Mục đích của HttpHeaders.TryAddWithoutValidation là gì?
- 11. Mục đích của ldexp là gì?
- 12. Mục đích của IntentSender là gì?
- 13. Mục đích của requestWindowFeature() là gì?
- 14. Mục đích của nguyên mẫu là gì?
- 15. Mục đích của lớp Expression là gì?
- 16. Mục đích của startManagingCursor là gì?
- 17. Mục đích của config.assets.precompile là gì?
- 18. Mục đích của UIWindow là gì?
- 19. Mục đích của character_set_connection là gì?
- 20. Mục đích của phiên JMS là gì?
- 21. Mục đích của is_uploaded_file() là gì?
- 22. Mục đích của Parse Vexing là gì?
- 23. Mục đích của Array.GetLowerBound (int) là gì?
- 24. Mục đích của 'var' là gì?
- 25. Mục đích của tệp .edmx là gì?
- 26. mục đích của Thread.holdsLock (khóa) là gì?
- 27. Mục đích của thuộc tính-đích là gì?
- 28. khác biệt trong iOS OpenGL ES và Android OpenGL ES
- 29. Mục đích của thư mục buildSrc của gradle là gì?
- 30. JAF là gì? Mục đích của nó là gì?
Chính xác là nó .. Trên OpenGL | ES nó glNormal thiết lập mặc định bình thường. Imho họ có thể sẽ làm tốt hơn nếu họ đã gỡ bỏ chức năng. glMultiTexCoord tồn tại cho cùng một lý do btw. –