草庐IT

textures

全部标签

java - 在 OpenGL ES (Android) 中使用带有纹理的索引缓冲区有什么意义吗?

我正在使用OpenGLES来显示从Blender导出的一些对象。Blender提供了一个顶点列表、一个面索引列表和一个二维纹理坐标列表。在Blender中,我普遍相信OpenGL,纹理坐标映射到索引数组中描述的每个顶点。我想我有两个问题:我是giventounderstand(请参阅“应用纹理”部分)在OpenGLES中,纹理坐标仅映射到顶点缓冲区,而不是索引缓冲区。是这种情况还是有一种方法可以将纹理坐标绑定(bind)到索引缓冲区?如果上述情况属实,那么使用索引缓冲区有什么好处吗?毕竟要正确映射纹理,需要写出顶点缓冲区,其中包含本应与索引缓冲区一起保存的所有冗余。是否仍然需要提高性能

Android OpenGL - ES 纹理出血

我正在编写一个小应用程序,目前可以生成随机纹理贴图。我将这张map绘制成一组10x15的“四边形”,它们实际上都是三角形strip。我使用“map”获取一个整数,然后将其作为该正方形在textureAtlas中的纹理位置。所以例如0是左下角的“tile”。map集大小为128x128,分为32个像素block。然而,我似乎得到了一些奇怪的伪像,其中一个图block的纹理正在蔓延到下一个图block。我想知道它是否是图像本身,但据我所知,像素正是它们应该在的位置。然后我查看了我指定的纹理坐标,但它们看起来都很准确(0.0、0.25、0.5、0.75、1.0-将其分成我期望的4行和4列)。

安卓消息 "Cannot generate texture from bitmap"

我正在使用Gallery-widget和大量位图。我使用Bitmap.recycle()删除位图。结果我在logcat上看到了下一条消息:08-1817:49:26.020:INFO/dalvikvm-heap(13847):Growheap(fragcase)to22.373MBfor2457616-byteallocation08-1817:49:26.060:DEBUG/dalvikvm(13847):GC_FOR_ALLOCfreed1K,36%free22835K/35143K,paused27ms08-1817:49:26.230:DEBUG/dalvikvm(13847)

Android Opengl ES 最大纹理数

我是一名Android开发人员,第一次尝试使用OpenGLES1.0来显示大量带有纹理映射到其上的方形对象。这些纹理取自大位图,稍后我可能会按比例缩小。有谁知道如何找出我的设备将支持的最大纹理数(以编程方式)?我假设最大数量取决于纹理的大小和压缩状态等因素。但是我找不到任何文档提到这个限制是什么,或者如何解决这个问题。我希望能够渲染100,000纹理映射的方形对象,但不确定这在我的设备上是否可行。这是针对非标准Android设备的,因此如果官方发布的设备存在此类规范,则没有此类规范。这是一款非移动定制设备,运行Android4.1,内存为1GB。帮助或建议?

java - GLES2.0 : Use GL_TEXTURE_EXTERNAL_OES via glEGLImageTargetTexture2DOES

我想在Java中渲染一个图像缓冲区(在这种情况下,NDK不是一个选项)并通过GL_TEXTURE_EXTERNAL_OES将其传递给着色器.glTexImage2D不起作用,如spec中所述.但是函数glEGLImageTargetTexture2DOES只能通过GLES11Ext类使用,使用起来似乎有点不对。无论如何,我试过了,它给了我GL_INVALID_OPERATION,这应该发生在以下情况下:IftheGLisunabletospecifyatextureobjectusingthesuppliedeglImageOES(if,forexample,referstoamult

android - LibGDX 从 base64 PNG ByteArrayInputStream 创建纹理

我刚刚决定将Slick2D更改为LibGDX。但是,为了能够将我的游戏移植到LibGDX,我需要帮助了解如何从我的游戏数据文件在LibGDX中创建纹理。我的游戏数据文件是加密的,图像是用base64编码的,所以我可以将它们全部保存在一个txt文件中。如何从ByteArrayInputStream创建LibGDX纹理。在Slick2D中,我将base64字符串转换为缓冲图像。但我不想为LibGDX这样做,因为我可能希望尽快在Android上使用它。编辑:我刚刚想通了,有点。我是这样做的:Texturebucket;Stringbase64="base64stringtoolongtopa

android - 如何从 GLSurfaceView 保存位图(仅位图,不是整个纹理)

我正在使用这段代码对GlSurfaceView上的位图产生多重效果。apply-effects-on-image-using-effects现在,我想保存位图。他们已经给出了保存位图的代码,但是有了这个,整个GlSurfaceView将被保存为位图图像。相反,我只想保存位图区域以另存为图像。有一种方法可以获取像素并从中制作位图,也可以制作图像。例如:publicBitmaptakeScreenshot(GL10mGL){finalintmWidth=mEffectView.getWidth();finalintmHeight=mEffectView.getHeight();IntBuf

Android OpenGL ES 2.0 文本渲染

网络上似乎明显缺乏对如何在OpenGLES2.0中显示文本的支持。JVitela的回答:DrawtextinOpenGLES说使用Canvas,并在其上绘制文本以生成位图,然后使用GLUtils渲染文本位图,但答案仅显示直接绘制文本的部分,而不显示围绕它的其他内容。我也一直在尝试在http://www.learnopengles.com上课,在本例中是处理基本纹理的第4课。JVitela的方法是如何传递给顶点或fragment着色器的?关于背景的部分是否必要,或者将背景留在外面只会导致GLSurface其余部分的文本?他使用的textures变量到底是什么?我认为这是一个纹理数据句柄(

java - 如何捕获错误 'Bitmap too large to be uploaded into a texture'

我的android应用程序处理非常大的位图。因此,我在ImageView上关闭了硬件加速。但是,一些用户已将开发人员选项“强制GPU加速”设置为打开。这会导致错误“位图太大,无法上传到纹理中”。如果我使用isHardwareAccelerated()检查View,它总是返回false。有什么方法可以捕获OpenGL错误“位图太大而无法上传到纹理中”吗? 最佳答案 位图由像素组成,您可以计算位图矩阵中的像素数,为您的位图像素数设置一个限制。在OpenGl中我不能说,但通常我们可以轻松处理它们,也有一种方法位图.inSampleSize

java - 为什么像素颜色在 Android 上的 OpenGL ES 2.0 中不正确?

(编辑:我尝试了一个示例,它只绘制了一个三角形,没有任何纹理或着色器,并且在我的设备上只有OpenGL-ES1.1,并且可以看到相同的伪影。我在模拟器中尝试了相同的示例,那里没有伪影完全没有。这可能是Tegra2问题,还是我需要设置特定状态或模拟器中不需要的东西?)我正在屏幕上渲染一个像素正确的正方形,但是当我截屏并查看像素时,其中一些像素会稍微偏离,例如抗锯齿或过滤或类似的东西。您只有在放大它们时才能看到它,但这不是重点。我想在像素着色器中做一些数学运算,如果像素稍微偏离,那对我来说就不好了。我需要它们,就像我放入它们的位图中一样。这是问题的放大屏幕截图。在白线周围,暗值比应有的值稍