2017-09-05 67 views
0

在android系统texImage2Dhttps://developer.android.com/reference/android/opengl/GLUtils.html) 我们有论文2个功能:机器人的OpenGL texImage2D:internalformat和类型参数

void texImage2D (int target, 
       int level, 
       Bitmap bitmap, 
       int border) 

void texImage2D (int target, 
       int level, 
       int internalformat, 
       Bitmap bitmap, 
       int type, 
       int border) 

一个不需要internalformat和其它功能需要它。第一个变体(不需要内部格式和类型的变体)的缺点是什么?如果他们没有缺点,为什么其他变体甚至存在?请注意,我不知道内部格式和类型的用途是什么,通常在我的OpenGL程序中,我总是使用rgba作为内部格式和类型。

回答

2

OpenGL中的internal_format用于指定每个像素在内存中的确切格式。 `type'指定传入数据(位于android中)的格式。

第一个版本(没有内部格式参数的版本)决定了bitmap.colorType()的内部格式和类型。

texImage2D的第一个版本没有实际问题,但它限制了可能的内部格式。例如,它将不可能创建浮点纹理,16位或32位纹理或整数纹理。你可以看看getInternalFormat method,它确定内部格式以查看哪些格式受支持。如果您想要任何内部格式不返回,那么必须使用确切的内部格式调用texImage2D

+0

谢谢BDL!顺便说一下,16或32位纹理的优点是什么? – andrey

+0

如果你想做HDR渲染或其他许多效果,你将需要它。对于“正常”颜色纹理,8位通常就足够了。 – BDL