我可以根据显示密度将纹理加载到OpenGL中吗?

时间:2014-10-16 16:14:03

标签: java android opengl-es opengl-es-2.0

按照Android OpenGL编程的示例代码,我从原始资源加载纹理。

例如,

// Create a texture handle
int[] texArray = new int[1];
GLES20.glGenTextures(1, texArray, 0);
int textureID = texArray[0];

// Bind the texture and configure parameters
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureID);
GLES20.glTexParameterf(etc...);

// Open the image resource as a stream
InputStream is = resources.openRawResource(R.raw.sometexture);

// Read the stream into a bitmap
Bitmap bitmap = BitmapFactory.decodeStream(is);

// Load the bitmap into GL
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);

bitmap.recycle();
is.close();

(我的实际代码确实有错误检查等...)

这是从存储在res / raw / sometexture.png中的PNG文件加载位图

如何根据当前显示密度加载图像?我假设我会将图像放入各种res / drawable - ?? dpi文件夹,但后来不确定如何加载它们!

1 个答案:

答案 0 :(得分:0)

显然,我可以使用

BitmapFactory.decodeResource(getResources(), R.drawable.sometexture);

这将从/ res /./ / p>下的drawable - ?? dpi文件夹的最佳可用选项加载图像