在Android上使用OpenGL ES 2.0对多个实体进行纹理处理
我需要解释一下如何将纹理应用于不同的实体。我的理解是一次只能有一个绑定纹理。因此,如果有许多实体都使用不同的纹理,那么如何将纹理应用于实体,渲染实体,然后绑定下一个实体以应用于下一个实体 我想我对将纹理应用于实体并使用正确的纹理渲染它的时机感到困惑。我计划使用纹理地图集为类似的精灵和动画和东西。但我不知道如何在渲染之前将纹理或纹理的一部分(纹理图集)保存到实体中,以便继续将下一个纹理应用到其他实体 类似地,如果我加载了一个纹理图集并使用它来制作一个实体的动画,但也需要另一个实体来制作动画,即使用不同的纹理图集,那么我是否需要让游戏加载另一个图集并应用它来实现另一个动画在Android上使用OpenGL ES 2.0对多个实体进行纹理处理,android,entity-framework,opengl-es,textures,Android,Entity Framework,Opengl Es,Textures,我需要解释一下如何将纹理应用于不同的实体。我的理解是一次只能有一个绑定纹理。因此,如果有许多实体都使用不同的纹理,那么如何将纹理应用于实体,渲染实体,然后绑定下一个实体以应用于下一个实体 我想我对将纹理应用于实体并使用正确的纹理渲染它的时机感到困惑。我计划使用纹理地图集为类似的精灵和动画和东西。但我不知道如何在渲染之前将纹理或纹理的一部分(纹理图集)保存到实体中,以便继续将下一个纹理应用到其他实体 类似地,如果我加载了一个纹理图集并使用它来制作一个实体的动画,但也需要另一个实体来制作动画,即使用
我熟悉OpenGLES2.0API。我只需要如何应用它的帮助。如果我理解正确,您正在寻找一个好的应用程序结构,使用atlas纹理实现精灵动画。我知道有很多好的方法可以做到这一点,所以我将尝试只解释一种 最好在一些控制纹理和模型的类中处理您的情况 在底部,您应该创建一个处理纹理的类,它包含一个纹理ID,如果它是从文件加载的,则应该包含一个文件名(或一些自定义ID)。此类应包含的公共内容包括:
- 所需构造函数:大小(FBO)、名称(来自文件)
- 绑定(绑定纹理)
- 纹理大小
- 纹理上的图像大小(在将非盆栽图像应用于盆栽纹理时)
- 显式清理(删除纹理)
- 名为的纹理(从缓存返回具有特定名称的纹理,或使用此名称创建新的纹理类并将其存储)
- 显式清理(只需删除所有纹理并清空缓存)
- 绑定链接纹理
- 从纹理(或atlas子类)获取并绑定纹理坐标
- 从模型中获取并绑定位置坐标
- 对着色器执行所需的任何其他设置
- 画
我希望这个解释能对您有所帮助。非常感谢您的回复。在发布我的原始帖子后,我尝试了一种方法,但没有成功。我一次只能画一个物体。你的回答应该让我朝着正确的方向前进。再次感谢!我正在尝试应用您的建议,但我在找出如何创建纹理类时遇到了困难。是否有一种获取纹理/图像大小的方法?这取决于您使用的是什么。如果使用某种库加载纹理,则应在该库中搜索这些值。如果没有,并且您正在将原始数据推送到GPU,那么这些值将在glTexImage2D和GLTEXISubImage2D中使用。