jjzjj

三星 Galaxy 变体上的 Android opengl 白色纹理

我在samsunggalaxy变体上得到白色纹理,但在我测试的其他手机上,纹理工作得很好。所以我的问题是通常怀疑是什么导致了这种行为?星系变体是否有任何特殊硬件并且缺少某些东西?我的纹理加载代码是这样的GLuinttexture;glGenTextures(1,&texture);glBindTexture(GL_TEXTURE_2D,texture);glPixelStorei(GL_UNPACK_ALIGNMENT,2);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexParameterf(GL

android - GLSurfaceView 在 Nexus 7 和 Android 4.2 上显示黑色

我有一个OpenGLES2.0应用程序,它可以在运行从2.2到4.1的各种Android版本的设备上运行。然而,有人告诉我,当在装有Android4.2的Nexus7上运行它时,应用程序中的3D图形都是黑色的。虽然操作栏和对话框工作正常。我已经在带有IntelAtom处理器、HAX和GPU的模拟Nexus7上试过了,它启用了运行4.2.2并且工作正常。我更愿意运行ARM镜像,但它似乎不包括OpenGLES2.0有没有人了解可能导致Nexus7出现此问题的原因以及如何解决该问题?一种可能是当前应用程序版本将目标API级别设置为15,而4.2.2是级别17。这可能是个问题吗?不过它在模拟器

android - SurfaceTexture 大小,如何定义?

我正在使用SurfaceTexture绘制相机预览,需要知道纹理的大小+过程中发生的情况。假设设备支持的相机预览尺寸为:1280720、1024576、960720、800600、800480、768576、736552等。很明显,这些尺寸与标准纹理尺寸2048x2048、2048x1024、1024x1024不匹配......我可以想到以下情况,但我不确定:1,表面纹理尺寸为所选预览尺寸,例如1280x720,但这不是pow2格式,可能意味着兼容性问题2,表面纹理包含在pow2格式的下一个尺寸中,未转换,例如1280x720将包含在2048x1024纹理中,没有拉伸(stretch)

android - 将多个纹理传递给 LibGDX 中的着色器

我需要将2个(或更多)纹理传递给一个着色器。此外,我必须在渲染方法中绑定(bind)纹理,因为我使用FrameBuffer并尝试动态绑定(bind)纹理。所以,我的代码如下:@Overridepublicvoidshow(){fbo=newFrameBuffer(Format.RGB565,Gdx.graphics.getWidth(),Gdx.graphics.getHeight(),false);shader=newShaderProgram(Gdx.files.internal("shaders/vertex.glsl"),Gdx.files.internal("shaders/

android - 如何在 OpenGL ES 2.0 中管理多个纹理?

我有一个具有6种不同纹理的OpenGLES2.0应用程序。我需要的是同时绘制和移动它们。我能够做到,但是Action很慢,因为我一直在将位图加载到纹理中。对于每个纹理,我在Render方法上执行以下操作:setupImage(texture1);GLES20.glVertexAttribPointer(mPositionHandle,3,GLES20.GL_FLOAT,false,0,vertexBufferT1);GLES20.glVertexAttribPointer(mTexCoordLoc,2,GLES20.GL_FLOAT,false,0,uvBufferT1);GLES20

android - 如何将纹理从一个 OpenGL 上下文传输到另一个

背景:Android原生相机应用使用OpenGL_1.0上下文来显示相机预览和图库图片。现在我想在原生相机预览中添加一个实时滤镜。要在我自己的相机应用程序预览中添加实时滤镜很简单——只需使用OpenGL_2.0进行图像处理和显示。由于OpenGL_1.0不支持图像处理,因此它以某种方式用于在Android原生相机应用程序中显示。*我现在想创建一个新的基于OpenGL_2.0的GL上下文进行图像处理,并将处理后的图像传递给另一个基于OpenGL_1.0的GL上下文进行显示。*问题:问题是如何将处理后的图像从GL-context-process(基于OpenGL_2.0)传输到GL-con

java - Android OpenGL ES 2.0 只限于内存中的 16 个纹理?

基本上,当我在AndroidStudio中使用OpenGLES2.0开发应用程序时,我遇到了一个我无法解决的大问题,它已经困扰了我大约一个星期。因此,每当我在内存中加载超过16个,可能是17个任意大小的纹理,并尝试通过我在Genymotion中的模拟器或我的ASUS平板电脑以2D方式显示它们时,它要么开始显示与我之前不同的图像在该特定索引处绑定(bind),或者根本不显示。然而,如果我通过我的三星GalaxyS6运行它,它运行良好。但是,如果我加载16个或更少的纹理,它可以在我测试它的所有设备上正常工作,包括模拟器。这让我尝试了一个小实验,看看它是否会显示每个字母为16x16png的字

android - 纹理仅在某些设备上显示

我目前正在编写一个适用于OpenGLES1.1的Android应用程序。它在我开发它的HTCDesire(Android2.3.7)上运行良好。现在我想在Nexus7上测试它,但它只显示黑屏。我发现所有纹理都简单地呈现为黑色。在没有渲染对象和纹理的部分,我得到(几乎)黑色的背景色。所以我的问题是为什么纹理在某些设备上渲染得很好,而在其他设备上渲染得不好?纹理都是二次方的,大小为2的幂(即512x512、1024x1024)。这些是创建纹理时使用的设置:gl.glBindTexture(GL10.GL_TEXTURE_2D,getTextureId());//CreateNearestF

java - Opengl ES 2.0 : Get texture size and other info

问题的上下文是Android环境下的OpenGLES2.0。我有一个纹理。显示或使用都没有问题。是否有一种方法可以简单地从绑定(bind)ID开始了解其宽度和高度以及其他信息(如内部格式)?我需要在不知道纹理大小的情况下将纹理保存到位图。 最佳答案 不在ES2.0中。功能不存在实际上有点令人惊讶。您可以获取渲染缓冲区的大小,但不能获取纹理的大小,这看起来不一致。唯一可用的是您可以使用glGetTexParameteriv()获得的值,它们是纹理的FILTER和WRAP参数。它仍然不在ES3.0中。仅在ES3.1中,添加了glGetT

Android OpenGL 纹理 : creating and deleting them on the fly

我目前正在实现一个3D查看器,它基本上可以呈现用户在其SD卡上拥有的所有图像的子集。我想到的最匹配的产品是CoolIris:它只是在屏幕上显示一个由N个图block组成的滚动板,每个图block显示不同的图像,新图block进入屏幕并显示新图像。现在我的问题是:我的程序可以正常工作并很好地渲染四边形。当四边形离开屏幕时,它会被回收/释放。新的四边形在进入屏幕之前不断被添加到拼贴板上。因为可能有数百张图像,所以需要即时创建和删除纹理(这样我们就不会耗尽内存)。我遇到的问题是,在我删除纹理后,新创建的纹理似乎获得了当前正在使用的其他纹理的一些ID。我的渲染循环看起来像这样:voidrend