gpt4 book ai didi

android - OPEN GL Android - 如何将位图对象转换为可绘制纹理

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:45 34 4
gpt4 key购买 nike

我正在尝试在 OPEN GL 2.0 中实现可滚动图像的网格。我已经使用 Canvas Drawing 实现了 View ,但出于性能原因,我决定过渡到 OGL。在我的实现中,我在每一帧绘制一个 Bitmap 对象列表,每个 Bitmap 都是缓存的图像缩略图行。现在我该如何将这些位图转换为我可以与 OGL 一起使用的纹理?

最佳答案

GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureID);
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);

..其中 textureID 是纹理的唯一 ID(通常从 glGenTextures() 获取,或者仅通过您自己的系统为每个新纹理分配一个新身份证号码)。 bitmap 是位图对象。


我的纹理类中的用法示例:

public class Texture {

protected String name;
protected int textureID = -1;
protected String filename;

public Texture(String filename){
this.filename = filename;
}

public void loadTexture(GL10 gl, Context context){

String[] filenamesplit = filename.split("\\.");

name = filenamesplit[filenamesplit.length-2];

int[] textures = new int[1];
//Generate one texture pointer...
//GLES20.glGenTextures(1, textures, 0);

// texturecount is just a public int in MyActivity extends Activity
// I use this because I have issues with glGenTextures() not working
textures[0] = ((MyActivity)context).texturecount;
((MyActivity)context).texturecount++;

GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[0]);

//Create Nearest Filtered Texture
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR);

//Different possible texture parameters, e.g. GLES20.GL_CLAMP_TO_EDGE
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_REPEAT);
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT);

Bitmap bitmap = FileUtil.openBitmap(name, context);

GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);

bitmap.recycle();

textureID = textures[0];

}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getTextureID() {
return textureID;
}

public void setTextureID(int textureID) {
this.textureID = textureID;
}


}

关于android - OPEN GL Android - 如何将位图对象转换为可绘制纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8665416/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com