Tăng tốc phần cứng OpenGL với SDL trên Linux


8

Tôi đang cố gắng sử dụng SDL + OpenGL nhưng tôi không tin khả năng tăng tốc phần cứng đang hoạt động vì tốc độ khung hình cho khoảng 18000 polys là khoảng 24fps trên máy lõi tứ nhưng là 1-2fps vô vọng trên Intel Atom. Ngay cả lõi tứ cũng bắt đầu vật lộn khi số poly tăng lên trên mức này.

Tôi đã kiểm tra mã của mình nhưng rõ ràng tôi đang thiếu một cái gì đó rõ ràng. Tôi đã thay đổi mã khởi tạo SDL của mình để sử dụng cùng mã như trong thử nghiệm OpenGL SDL . Nó báo cáo rằng SDL_GL_ACCELERATED_VISUAL là 1 nhưng hw_av Available trong SDL_VideoInfo là 0

Ngoài ra, nhà cung cấp được báo cáo chính xác là Nvidia trên cả hai máy và các ứng dụng được tăng tốc như Compiz và glxgears đều hoạt động tốt.

Bất kỳ ý tưởng về những gì để thử?

Cảm ơn

Câu trả lời:


6

Nếu bạn đang sử dụng glBegin () / glEnd () trong mã của mình, đặc biệt là nếu đặt kết cấu và trạng thái dư thừa giữa các khung (nghĩa là vẽ với kết cấu 1, sau đó 2, rồi 1, sau đó, trái ngược với 1,1,2, 2), bạn có thể phải chịu phí lái xe. Đặc biệt đây là trường hợp nếu bạn nhận thấy rằng một bộ xử lý chậm đang hoạt động trong khi nó vẫn có một thẻ tốt. Sử dụng glDrawArrays hoặc tương tự thường có nhiều hiệu suất tốt hơn .

Mặc dù không có danh sách mã đầy đủ, thực sự không có cách nào để biết chắc chắn. SDL là một trình bao bọc khá mỏng, vì vậy trừ khi bạn đang làm điều gì đó thực sự kỳ lạ, tôi sẽ không mong đợi một lỗi. Ngoài ra, những thẻ nào đang được sử dụng?


Thẻ trên máy này là nVidia Corporation GT218 [ION]. Tôi hiểu rằng nó sẽ chậm một chút trước khi tôi tối ưu hóa nhưng không chậm như thế này. Tôi đang ràng buộc 1 kết cấu và sử dụng nó để vẽ một chiều cao đơn giản được thừa nhận là 1 tam giác tại một thời điểm. Vì vậy, một cách khá khủng khiếp để làm mọi thứ nhưng ngay cả như vậy, chậm hơn dự kiến.
Robin Elvin

1
Chỉ cần thực hiện các cuộc gọi glBegin () / glEnd () bên ngoài vòng lặp và điều chỉnh thói quen vẽ phù hợp và tốc độ khung hình lên tới 30fps. Vì vậy, tôi đã không biết những tác động mạnh mẽ mà những cuộc gọi đó tạo ra khi sử dụng không chính xác :) Cảm ơn!
Robin Elvin

Không vấn đề gì. Rất vui vì tôi có thể giúp.
ChrisE

@ChrisE Ý bạn là gì "SDL là một vỏ bọc khá mỏng"?
Chris
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.