小小的背景故事 - 我正在使用OpenGL ES2.0開發Android應用程序,前一段時間我遇到了線寬問題,最後發現glLineWidth()
實現是供應商特定的,並且不保證可能值的範圍。例如對於Adreno200,它是1-18,仿真器是1-100。是否有可能獲得供應商特定的OpenGL ES 2.0方法列表?
我想知道是否有可能獲得這種方法的列表。
小小的背景故事 - 我正在使用OpenGL ES2.0開發Android應用程序,前一段時間我遇到了線寬問題,最後發現glLineWidth()
實現是供應商特定的,並且不保證可能值的範圍。例如對於Adreno200,它是1-18,仿真器是1-100。是否有可能獲得供應商特定的OpenGL ES 2.0方法列表?
我想知道是否有可能獲得這種方法的列表。
運行程序時,您可以從glGet中獲取所有這些數據。
例如,請求glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE,lineWidthRange);
將返回線寬範圍。
OpenGL ES 2.0 specification在其第6.2節列出了所有最低要求。從那裏我們可以看到線寬範圍保證爲[1,1],其他一切都是特定於實現的。
我不知道會根據屬性值比較「所有」實現的列表。
具有供應商特定值的限制列表位於spec文檔中。要發現:
在此PDF文件中,查找從第134頁開始的「6.2狀態表」一節。然後,您要查找的信息在「表6.18實現相關值」中。
下表列出了每個值的名稱以及用於查詢特定實現的值的函數。它也非常有用,它列出了保證所有實現都支持的最小值。
爲了您的具體的例子,你會發現一個值ALIASED_LINE_WIDTH_RANGE
,這是在表中所支持的最低值第6項,與GetFloatv
函數名,1,1
,這對於說明:
範圍(從低到高)鋸齒線的寬度
在此基礎上,你知道的實現可以有低至1的最大線寬度的限制(即它們不支持寬行的話),你可以查詢你正在使用w的實現的限制ith:
GLfloat widthRange[2];
glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, widthRange);