WebGL选择内部格式

3
在WebGL的texImage2D调用中,传递给internalformat的有效可能值是什么?WebGL规范似乎没有明确说明,我不确定桌面GL文档中的哪些枚举在WebGL中可用。
WebGL定义了RGB、RGBA、RGBA4、RGB5_A1和RGB565。这些是否都保证是有效的内部格式?
type参数是否会被考虑?如果我将internalformat设置为RGB,并将type设置为UNSIGNED_SHORT_5_6_5,这是否保证内部格式将为16位?还是它总是使用RGB8或根据其他因素决定?

RGBA4RGB5_A1RGB565 是渲染缓冲区格式,而不是纹理格式。请参阅 glRenderbufferStorage(http://www.khronos.org/opengles/sdk/docs/man/xhtml/glRenderbufferStorage.xml)。 - gman
1个回答

3
根据我的理解,以下参数在WebGL中是有效的:
内部格式:GL_ALPHA、GL_LUMINANCE、GL_LUMINANCE_ALPHA、GL_RGB、GL_RGBA。
格式:GL_ALPHA、GL_RGB、GL_RGBA、GL_LUMINANCE和GL_LUMINANCE_ALPHA。
类型:GL_UNSIGNED_BYTE、GL_UNSIGNED_SHORT_5_6_5、GL_UNSIGNED_SHORT_4_4_4_4和GL_UNSIGNED_SHORT_5_5_5_1。
内部格式必须与格式匹配。
根据opengl ES 2.0文档:
内部格式必须与格式匹配。在纹理图像处理期间不支持格式之间的转换。类型可以用作指示,以指定需要多少精度,但GL实现可以选择将纹理数组存储在任何内部分辨率中。
如果WebGL文档没有提供足够的细节,也许完整的OpenGL ES 2.0文档可以帮助(第3.7.1章)。从查看WebGL和OpenGL ES 2.0之间的差异来看,在glTexImage2D方面,WebGL和OpenGL ES 2.0之间不应该有任何区别。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接