我在想,如果有一個簡單的方法來查詢(編程)對下列功能的GPU OpenGL的限制:
- 最大的2D紋理大小
- 最大3D紋理大小
- 的最大數量頂點着色器屬性
- 不同彩車的最大數量
- 紋理圖像單位數(頂點着色器,並在片段着色器)
- 繪圖緩衝的最大數量檢查GPU的OpenGL限制
我之前需要預先知道這些數字writi我的GPU研究項目。
我在想,如果有一個簡單的方法來查詢(編程)對下列功能的GPU OpenGL的限制:
- 最大的2D紋理大小
- 最大3D紋理大小
- 的最大數量頂點着色器屬性
- 不同彩車的最大數量
- 紋理圖像單位數(頂點着色器,並在片段着色器)
- 繪圖緩衝的最大數量檢查GPU的OpenGL限制
我之前需要預先知道這些數字writi我的GPU研究項目。
glGet()是你的朋友,有:
GL_MAX_3D_TEXTURE_SIZE
GL_MAX_TEXTURE_SIZE
GL_MAX_VERTEX_ATTRIBS
GL_MAX_VARYING_FLOATS
GL_MAX_TEXTURE_UNITS
GL_MAX_DRAW_BUFFERS
例如爲:
GLint result;
glGetIntegerv(GL_MAX_VARYING_FLOATS, &result);
不太清楚你的項目正着手來實現的,但如果它的通用計算和你不是已經意識到這一點,你可能會感興趣的OpenCL。尤其是Cl/GL interop如果還有圖形元素,並且您的硬件支持它。
正如Damon在實際評論中指出的那樣,紋理尺寸可能比這更復雜。出現這些問題是因爲對於某些尺寸的紋理,渲染可能會從硬件回退到軟件,還會因爲紋理的大小根據所使用的像素格式而變化。要解決此問題,可以使用GL_PROXY_TEXTURE_* with glTexImage*。
爲補充什麼被「awoodland」說,如果你還是不知道......我想你應該看看GLEW ...
GLEW提供了確定有效的運行時間機制目標平臺支持哪些OpenGL擴展。
謝謝awoodland!我相信我還需要學習OpenCL。之前沒有使用過,但那會很方便學習。 – 2011-02-15 16:33:10