小背景故事 - 我正在使用OpenGL ES2.0开发Android应用程序,前段时间我遇到线宽问题,最后证明glLineWidth()
实现是供应商特定的,可能的范围价值不保证。例如,Adreno200为1-18,模拟器为1-100。
我想知道是否有可能获得此类方法的列表。
答案 0 :(得分:1)
运行程序时,您可以从glGet获取所有此类数据。
例如,请求glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE,lineWidthRange);
将返回行宽范围。
OpenGL ES 2.0 specification列出了6.2节中的所有最低要求。从那里我们可以看到线宽范围保证为[1,1],其他一切都是特定于实现的。
我不知道一个列表可以比较"所有"根据属性值实现。
答案 1 :(得分:1)
具有供应商特定值的限制列表位于规范文档中。要找到:
在此PDF文件中,查找从第134页开始的部分" 6.2状态表"部分。您要查找的信息是"表6.18实现相关值&#34 34。
此表列出了每个值的名称,以及用于查询特定实现的值的函数。同样非常有用,它列出了所有实现都支持的最小值。
对于您的具体示例,您将找到值ALIASED_LINE_WIDTH_RANGE
,它是表中的第6个条目,函数名称为GetFloatv
,支持的最小值为1,1
,这个描述:
别名线宽的范围(低到高)
基于此,您知道对于最大线宽,实现可以具有低至1的限制(即它们根本不支持宽线),并且您可以查询您正在使用的实现的限制:
GLfloat widthRange[2];
glGetFloatv(GL_ALIASED_LINE_WIDTH_RANGE, widthRange);