草庐IT

android - 如何在 Open GL ES Android 上设置背景颜色

我现在正在玩第8课http://insanitydesign.com/wp/projects/nehe-android-ports/我想将背景颜色从黑色更改为白色。为了在onDrawFrame()开始时执行此操作,我调用了gl.glClearColor(1.0f,0.0f,0.0f,0.0f);这确实设置了一个白色背景屏幕,但也导致屏幕上没有显示任何其他内容!因此,显然这是一种不正确的方法,但是为什么,我该如何解决呢?!非常感谢。编辑(5天后):根本没有人知道吗?!! 最佳答案 白屏是因为您将alpha值设置为0.0f。参数签名是:

Android 位图内存问题 - ARGB_4444 与 RGB_565

将图像加载到位图中时,哪种方法消耗更多内存(ARGB_4444与RGB_565)?谢谢。 最佳答案 它们占用相同数量的内存。(看到那些数字了吗?它们告诉您每个分量(A、R、G、B)的位数。将它们相加得到每个像素的总位数。)不过,如果您不需要这两个的透明度,我建议您使用RGB_565,因为它可以为您提供更鲜明的颜色。ARGB_4444牺牲了一些颜色深度以提供透明度。 关于Android位图内存问题-ARGB_4444与RGB_565,我们在StackOverflow上找到一个类似的问题:

Android、GL、沉浸模式下的屏幕尺寸

我正在使用Nexus4KitKat4.4进行开发,并且尝试将IMMERSIVEMODE添加到我的游戏中。我需要屏幕高度才能正确设置glViewport。我以前用过@SuppressWarnings("deprecation")@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)publicstaticintgetScreenHeight(){if(Main.m_activity==null)return-1;Displaydisplay=Main.m_activity.getWindowManager().getDefaultDisplay();i

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

java - 从相邻的 GL10 绘图图像中获取线条,解决方案?

我有一张背景图片,我正在使用opengl1.0es绘制。问题是当我将这个小图像绘制到大屏幕时,我得到了这个...模式中的线条/中断不应该存在。我试了很多东西,我想也许我的图集是错误的……怀疑它。我从(0,0,50,50)绘制它,即(x,y,width,height)。检查了很多,仍然得到相同的结果,这是应该的。用下面的for循环尝试了不同的东西......GL10gl=this.glGraphics.getGL();gl.glClear(GL10.GL_COLOR_BUFFER_BIT);guiCam.setViewportAndMatrices();gl.glEnable(GL10.

android - 是否有屏幕尺寸大于 GL_MAX_TEXTURE_SIZE 的 Android 设备?

我一直在搜索glbenchmark.com对于屏幕尺寸(宽度或高度)大于GL_MAX_TEXTURE_SIZE的设备。我发现超过一百个设备的GL_MAX_VIEWPORT_WIDTH和GL_MAX_VIEWPORT_HEIGHT大于GL_MAX_TEXTURE_SIZE(例如AcerA110),但没有屏幕尺寸的设备大于GL_MAX_TEXTURE_SIZE。所以我假设没有这样的设备。是否有任何规范可以保证每台设备(或Android设备)的屏幕尺寸小于或等于GL_MAX_TEXTURE_SIZE?如果不是,是否有任何设备可以打破我的假设? 最佳答案

Android 设备 GL_MAX_TEXTURE_SIZE 限制,安全纹理大小

我正在使用AndEngine和OpenGLES2.0。我一直在阅读有关GL_MAX_TEXTURE_SIZE以及如何将我的纹理保持在1024x1024以下的内容。我在TMX扩展中使用tilesets之前和同时开始错误(如果你不了解AndEngine,它是什么并不重要)我得到了一个使纹理宽度超过1024px的tileset。我正在考虑将tileset分成两部分,使它们“安全”。但我找不到在过去几年发布的任何设备都在2048x2048下设置了此限制。是否有任何列表或网站可用于按GL_MAX_TEXTURE_SIZE过滤设备?我阅读了以下问题:MinimumrequiredTextureSi

Android DrawBitMap 在使用 ARGB_8888 时非常慢

我发现DrawBitMap只需要50-60毫秒来绘制三个位图,一个是占据整个屏幕的矩形,一个是圆形,另一个是路径。我的位图是通过在空白位图上使用Canvas.drawPath、drawRect和drawCircle创建的,Bitmap.Config为ARGB_8888。我正在使用ARGB_8888使背景可见以获得分层效果。我震惊地发现所花费的时间大约为50毫秒,因为我认为drawBitmap是一个非常简单的操作。有人可以指导我是否犯了任何根本错误。以下是我的代码创建空白位图Rectangle=Bitmap.createBitmap(320,480,Bitmap.Config.ARGB_

Android - 读取没有 alpha 的 PNG 图像并解码为 ARGB_8888

我尝试从sdcard(在模拟器中)读取图像,然后使用创建位图图像BitmapFactory.decodeByteArray方法。我设置选项:options.inPrefferedConfig=Bitmap.Config.ARGB_8888options.inDither=false然后我将像素提取到ByteBuffer中。ByteBufferbuffer=ByteBuffer.allocateDirect(width*height*4)bitmap.copyPixelsToBuffer(缓冲区)然后我在JNI中使用此ByteBuffer将其转换为RGB格式并希望对其进行计算。但我总是得

android - 如何停止 Open GL 渲染器

出于某种原因,我需要重新启动GLSurfaceView.Renderer,所以我想在我的应用程序中花点时间第二次调用setRenderer(newRenderer),Android不喜欢这样做,并抛出IllegalStateException说“setRenderer已被调用“……现在,我知道这是因为渲染器附加到GLSurfaceView,我需要解除此渲染器与表面View的绑定(bind),以便我可以再次调用setRenderer。有人对此有解决方案吗?附言:代码如下所示:render=newRenderer(this);setContentView(R.layout.main);gr