Được biết, đồng phục và thuộc tính là các thanh ghi trong GPU. Và câu hỏi của tôi là những gì sẽ xảy ra khi chương trình khác nhau bị ràng buộc? Đảm bảo tiêu chuẩn mà trước đây đặt đồng phục và/hoặc con trỏ thuộc tính sẽ được tải lại hay tôi cần tải lại chúng theo cách thủ công trong mọi trường hợp? Tôi muốn tạo hệ thống bộ nhớ đệm. Dường như đối với tôi rằng các thuộc tính không được nạp lại (có?) Khi chương trình phục hồi và những gì về đồng phục? Trình điều khiển GL ES có tải lại các giá trị của họ cho tôi không?OpenGL ES 2: Đồng phục và thuộc tính
Trả lời
Không, không nổi tiếng là đồng phục và thuộc tính là thanh ghi trong GPU. Trong thực tế, nó là sai đối với ít nhất trong một GPU OpenGL ES 2.0 được triển khai rộng rãi.
Đồng phục bằng 0 trừ khi được khởi tạo rõ ràng. Các giá trị thống nhất là các trạng thái theo đối tượng chương trình. Nói cách khác, nếu bạn đặt đồng phục trên đối tượng chương trình đã cho, bạn CÓ THỂ phụ thuộc vào giá trị đang được bảo tồn trên các đối tượng của cùng một đối tượng chương trình, nhưng bạn không thể phụ thuộc vào đồng phục tại một vị trí nhất định. các đối tượng. Thực tế, việc triển khai OpenGL ES thực hiện điều này sẽ vi phạm đặc điểm kỹ thuật. Đây không phải là hành vi không xác định.
Con trỏ thuộc tính là trạng thái ngữ cảnh toàn cầu và bạn CÓ THỂ phụ thuộc vào các con trỏ này để được giữ nguyên giữa các cuộc gọi đến cùng một ngữ cảnh OpenGL ES. Cũng giống như các giá trị thuộc tính hiện tại (được đặt qua các thuộc tính glVertexAttribute *)
- 1. Android OpenGL ES 2, Vẽ hình vuông
- 2. Bộ đệm đồng phục OpenGL?
- 3. khác biệt trong iOS OpenGL ES và Android OpenGL ES
- 4. OpenGL-ES và Cg
- 5. OpenGL ES và OpenGL shaders tương thích
- 6. Hướng dẫn viết mã OpenGL và OpenGL ES tương thích?
- 7. OpenGL ES 2.0 vs OpenGL 3 - Điểm tương đồng và khác biệt
- 8. glGetUniformLocation trở -1 OpenGL ES (iPhone)
- 9. OpenGL | ES trên máy tính để bàn
- 10. Android Maps API đòi hỏi OpenGL ES 2
- 11. Cách tăng tốc kết xuất bằng OpenGL (ES) 2 Android
- 12. Chọn OpenGL ES 1.1 hoặc OpenGL ES 2.0?
- 13. Thống nhất so với các thuộc tính trong GLSL ES
- 14. OpenGL ES cho Iphone
- 15. iPhone OpenGL ES - Cách chọn
- 16. OpenGL ES 2.0 và các đối tượng đệm đỉnh (VBO)
- 17. Tương thích ngược OpenGL với OpenGL ES?
- 18. Phát triển OpenGL ES trên máy tính để bàn
- 19. Sương mù OpenGL so với sương mù OpenGL ES
- 20. Sự khác biệt giữa glkView: drawInRect: và glkViewControllerUpdate :? OpenGL ES 2 - iOS
- 21. Cách khắc phục để ghi độ sâu đệm/chiều sâu giá trị trong OpenGL ES 2.0
- 22. OpenGL ES 1.x Shaders
- 23. Android Native NDK OpenGL ES: unimplemented API
- 24. OpenGL ES Render to Texture
- 25. Khôi phục trạng thái OpenGL
- 26. Clipping-planes trong OpenGL ES 2.0
- 27. Kênh alpha alpha OpenGL ES 2.0
- 28. OpenGL ES 2.0 tương đương với glOrtho()?
- 29. chuyển view Tuỳ chỉnh trong OpenGL ES
- 30. Thực hành tốt nhất OpenGL ES cho điều kiện
Tôi tìm thấy trong đặc tả OpenGL ES rằng "Đồng phục là trạng thái của đối tượng chương trình cụ thể. đối tượng được sử dụng, miễn là đối tượng chương trình chưa được liên kết lại ". Vì vậy, tôi có thể để nó không thay đổi nếu giá trị của nó vẫn giữ nguyên. Giới thiệu về thuộc tính. Thử nghiệm của tôi nói khác nhau: nếu tôi bỏ qua glVertxAttribPointer khi con trỏ và bộ đệm là như nhau, trực quan tôi nhận được một cái gì đó sai hoặc thậm chí màn hình màu đen. Nhưng glGetError vẫn OK. – demi
Phần về đồng phục về cơ bản là những gì tôi nói. Về các thuộc tính, bạn có chắc chắn các thuộc tính bạn cố gắng sử dụng lại có cùng vị trí thuộc tính không? Nếu không, bạn có thể thử sử dụng glBindAttribLocation trước khi liên kết chương trình để đảm bảo. – kusma
Tôi ước tôi có thể +1 hai lần. một cho câu trả lời đúng, 1 cho tidbit "đăng ký". GPU nào bạn biết về điều đó không làm điều đó, btw? – Bahbar