2017-09-05 69 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