草庐IT

android - 帮助我为 2D 配置 OpenGL

我正在使用OpenGL为Android编写我的第一个2D应用程序。我在我的Desire上写它,所以我的屏幕坐标在横向模式下应该是0,0到799,479。我试图让OpenGL在世界坐标中使用这个范围。到目前为止,该应用程序运行良好,但我不得不调整数字以使内容出现在屏幕上,我对无法理解投影矩阵之间的关系感到沮丧,以及这方面的纹理渲染。设置投影矩阵:gl.glViewport(0,0,width,height);floatratio=(float)width/height;floatsize=.01f*(float)Math.tan(Math.toRadians(45.0)/2);gl.gl

android - 在Android中使用Opengl es绘制位图

我有一个在屏幕上绘制800*480图像的Android应用程序。我的手机也是800*480px。手机能够在大约25毫秒内完成绘图。每隔几秒,我想通过淡化第一张图像的alpha并增加第二张图像的alpha来转换到另一张同样为800*480的图像。执行此操作时,drawable.draw(canvas)调用大约需要75毫秒。我可以做些什么来减少过渡阶段的绘图时间?我考虑过使用OPENGL,但我想不通。 最佳答案 下面是一个使用OpenGLES1.0/1.1和纹理将位图绘制到GLSurfaceView的简单示例。privatestatic

The Cherno——OpenGL

TheCherno——OpenGL1.欢迎来到OpenGLOpenGL是一种跨平台的图形接口(API),就是一大堆我们能够调用的函数去做一些与图像相关的事情。特殊的是,OpenGL允许我们访问GPU(GraphicsProcessingUnit图像处理单元,也就是显卡),可以更好地绘制图形。实际上,为了利用在电脑或其他设备(比如手机)中强大的图形处理器,需要调用一些API访问固件。OpenGL正好是允许访问和操作GPU的许多接口中的一种。当然还有其他接口,Direct3D、Vulcan和Metal等。总的来说,在一定程度上,OpenGL允许我们控制显卡。需要澄清一下一些人的误解,许多人称它为一

java - OpenGL ES 渲染错误

好吧,我在这里遇到了openglES的问题(顺便说一句,刚开始了解它)。所以这里有一些代码GLExample.javapackagecom.android.OpGL;importandroid.app.Activity;importandroid.opengl.GLSurfaceView;importandroid.os.Bundle;publicclassGLExampleextendsActivity{GLSurfaceViewourSurface;/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreat

android - 如何摆脱 Android OpenGL ES 中的锯齿状边缘?

我有以下代码:publicvoidonSurfaceCreated(GL10gl,EGLConfigconfig){gl.glClearColor(0.0f,0.0f,0.0f,0.5f);gl.glShadeModel(GL10.GL_SMOOTH);gl.glClearDepthf(1.0f);gl.glEnable(GL10.GL_DEPTH_TEST);gl.glDepthFunc(GL10.GL_LEQUAL);//gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT,GL10.GL_NICEST);gl.glHint(GL10.GL_P

java - 安卓 OpenGL : IllegalArgumentException use native order direct buffer

安卓开发者!我有麻烦了。我的android应用程序必须使用OpenGL绘制几条线。我从this开始作为例子并重写它。它抛出IllegalArgumentException:调用GLES20.glVertexAttribPointer时必须使用native顺序直接缓冲区。我不明白为什么,因为我将它设置为nativeorder,就像我使用的示例一样。这是我完整的OpenGLRenderer类:(我在创建此类的实例时使用带有float[]参数的第二个构造函数)publicclassOpenGLRendererimplementsGLSurfaceView.Renderer{finalintC

android - Android 3.x/Google TV/SDK 上的视频处理 : Video frame to SurfaceTexture/OpenGL/GLSL

在花了一些时间之后,问问可能会更好。感谢您的帮助,伙计们!问题如何将视频帧从MediaPlayer或VideoView渲染到SurfaceTexture或OpenGL纹理,以便通过GLSL更改纹理/fragment颜色?(我们需要它来执行精美的GLES/GLSL视频处理例程。)上下文a)GoogleTV(LGG22012设备)是一款仅支持SDK(无NDK)的Android3.2设备b)从相机渲染到SurfaceTexture很容易,但是在Android3.x中如何将视频渲染到SurfaceTexture?相机解决方案见下文。c)我已经将视频帧渲染到GLView/GLRenderer,但

android - 如何在 OpenGL 上下文丢失后重新加载 libgdx 非托管纹理

我正在通过网络下载图像并将它们作为图像Actor添加到我的libgdxUI:Pixmappm=newPixmap(data,0,data.length);Texturet=newTexture(pm);TextureRegiontr=newTextureRegion(t,200,300);TextureRegionDrawabletrd=newTextureRegionDrawable(tr);Imageicon=newImage();icon.setDrawable(trd);鉴于此,我需要一些重新加载纹理数据的方法,因为当OpenGL上下文丢失时纹理数据也会丢失(例如,因为屏幕进入

android - 在 Android 上使用 OpenGL 时自动清除缓冲区

我正在编写一个特定的OpenGL应用程序,我特别想在其中逐步绘制帧。为此,我想禁用自动清除缓冲区,据我所知,这是GLSurfaceView.Renderer#onDrawFrame()的默认行为。有人可以帮我怎么做吗?我需要用Java编写应用程序,而不是使用原生SDK。我知道我可以通过以下方式做到这一点:-在执行eglChooseConfig时为EGL_SURFACE_TYPE属性设置EGL_SWAP_BEHAVIOR_PRESERVED_BIT位,以及通过调用EGLSurface对象上的eglSurfaceAttrib将EGL_SWAP_BEHAVIOR属性设置为EGL_BUFFER

Android Opengl ES 平铺引擎,平滑滚动

以下:Bestapproachforoldschool2Dzelda-likegame我有一个简单的2D瓷砖生成器,我正在读取一个填充有1或0的intmap[100][100],并根据瓷砖ID绘制瓷砖,0是水,1是草。我使用一些基本的Numpad控制处理程序,使用camIncr(32.0f),我根据运动设置相机位置:caseKeyEvent.KEYCODE_DPAD_RIGHT:cameraPosX=(float)(cameraPosX+camIncr);break;在我的绘制循环中,我只是绘制了足够多的图block以适合我的屏幕,并使用cameraOffsetX和cameraOffs