我對OpenGL很新,所以這可能很明顯,但是可以確定給定視頻卡是否支持特定功能?這是因爲我使用的是帶有ATI Radeon 9550顯卡的舊電腦,運行Lubuntu 12.10並發現它不支持使用dFdx和dFfy。我能夠解決這個問題,但現在我很好奇,如果我能夠找出由於這樣的問題是否發生故障,並基於此採取行動,可能使用替代方法等。以編程方式確定OpenGL功能是否受硬件支持
2
A
回答
3
您可以使用glGetString(GL_VERSION)
或glGetInteverv(GL_MAJOR_VERSION, …); glGetInteverv(GL_MINOR_VERSION, …);
來檢查支持的OpenGL版本。隨着OpenGL-3及之後的版本,OpenGL主要版本直接對應於硬件功能。
在舊版本中,事情並不嚴格,而且由於OpenGL的抽象設備模型,您無法真正「查詢」硬件功能。您可以檢查支持哪些擴展,這是支持的功能的一個很好的指示器,因爲很多ARB擴展將其擴展爲核心功能。如果當前OpenGL版本的某個功能所基於的擴展名不支持,那麼核心功能可能會被仿真。
我知道它非常模糊不清,但事實就是如此。唯一的另一種選擇是保持GL_RENDERER字符串的數據庫並與之匹配。
3
一般來說,你不能。不是你談論的那種事情。
dFdx
和dFdy
自1.10版(核心OpenGL 2.0中的第一個版本)以來一直是GLSL的一部分。支持他們是不是可選。
你的問題是,ATI/AMD希望宣稱他們較早的卡支持2.x,但他們的硬件實際上不能完成2.x所需的所有事情。所以他們說謊關於它,聲稱支持,同時默默做這些空操作。
OpenGL沒有辦法檢測到perfidy。你唯一能做的就是圍繞一張卡片列表,並使用GL_VENDOR
和GL_RENDERER
字符串進行測試。
相關問題
- 1. 以編程方式確定系統是否支持待機
- 2. 以編程方式確定路徑是否受限制
- 3. 確定Web存儲是否受支持
- 4. 以編程方式確定是否需要使用硬件光柵器
- 5. 是否正式支持execution_guard_enabled功能?
- 6. Android:以編程方式確定設備對TLS的支持
- 7. 確定是否一個Linux端口支持在硬件
- 8. 確定我的PC是否支持硬件虛擬化
- 9. 檢測iPad是否以編程方式支持SIM卡
- 10. 以編程方式查找設備是否支持GPS?
- 11. Android設備是否被硬件加密?以編程方式
- 12. 是否可以通過編程方式啓用/禁用硬件?
- 13. 以編程方式確定是否安裝了Racket軟件包
- 14. 以編程方式確定Excel文件(.xls)是否包含宏
- 15. 是否有可能以編程方式確定視頻是否正在播放?
- 16. 如何以編程方式確定支持的應用程序方向?
- 17. 如何在c#中以編程方式確定類型是否接受空值?
- 18. 如何以編程方式確定DLL是否被管理或不受管理?
- 19. 確定手機瀏覽器是否支持CSS和JavaScript功能
- 20. 檢查Sensor.TYPE_SIGNIFICANT_MOTION是否支持硬件
- 21. XNA是否支持OpenGL
- 22. 確定此功能是否成功的pythonic方式是什麼?
- 23. 以編程方式確定某個分支是否在github項目中關閉
- 24. teamcity是否可以支持排程功能?
- 25. 如何確定GPU是否支持OpenGL的Gamma校正
- 26. 如何確保Android設備應用程序支持硬件功能
- 27. 如何確定特定設備是否具有SIM硬件支持?
- 28. Javascript - 確定對Element.children功能的支持
- 29. 確定Android設備是否以編程方式生根?
- 30. SQL:以編程方式確定表是否爲視圖
感謝您的信息。這是他們的邪惡。幸運的是,這張卡是免費的,到目前爲止,它已經在很大程度上工作到現在爲止,除了這一點,我能夠解決它。現在我不得不將這一點留在我的腦海中。所以我猜想使用替代方法的唯一方法是檢查這些字符串,如果它們匹配某些卡片,則使用替代方法。這太糟糕了,你不能檢查,看看他們是否失敗了,然後嘗試別的。 – Travis