草庐IT

android - 在 NativeActivity 中创建 OpenGL 着色器

我调整了nativeActivityNDK示例以合并hello-gl2示例中的OpenGL代码。我处理APP_CMD_INIT_WINDOW消息,然后尝试创建着色器。着色器创建失败,我尝试通过getShaderInfoiv获取信息,但同样失败。所以我的问题是-如何在纯原生Android应用程序中创建OpenGLES2.0着色器?附言我知道如果您使用JavaGLSurfaceView并且没有在正确的线程中创建它们,着色器创建可能会失败,但是查看nativeActivity示例,它似乎只有一个线程! 最佳答案 当然可以在原生Androi

java - 在 Android OpenGL ES 应用程序中加载纹理

我想知道是否有人可以建议在AndroidJava和OpenGLES应用程序中加载纹理的良好模式。我首先关心的是确定要分配多少个纹理名称,以及如何在渲染我的顶点之前有效地执行此操作。我的第二个问题是加载纹理,我必须根据我的游戏数据推断要加载的纹理。这意味着我将玩弄字符串,我知道这是我不应该在我的GL线程中做的事情。总的来说,我了解加载纹理时发生的情况,我只想从中获得最佳生命周期。还有其他我应该考虑的事情吗? 最佳答案 1)您应该根据需要分配尽可能多的纹理名称。一个用于您正在使用的每个纹理。加载纹理是一项非常繁重的操作,会拖延渲染管道。

OpenGL沿方向向量移动播放器

我尝试实现FP摄像机后面的想法以移动播放器对象,因此我有4个向量位置,正确,向上和前方,我使用以下方法更新向量并填充矩阵以发送到着色器:voidMesh::updateVectors(){glm::vec3f;f.x=cos(glm::radians(this->yaw))*cos(glm::radians(this->pitch));f.y=sin(glm::radians(this->pitch));f.z=sin(glm::radians(this->yaw))*cos(glm::radians(this->pitch));this->front=glm::normalize(f);th

安卓 OpenGL 截图

我搜索了很多有关在Android上截取我的OpenGL对象的屏幕截图的信息,并提出了this解决方案。它工作得很好,但在我的例子中,我在相机View之上有相机View和openglView(具有透明背景)。所以我想做的是获得透明背景而不是黑色的opengl屏幕截图。正如我所说,我已经尝试过上面的链接并且它有效但我被黑色背景卡住了。在这种特殊情况下,弄清楚如何摆脱黑色背景有点复杂。希望有人能尽快帮助我(我也认为解决方案很简单,我只是缺少一些简单的东西)。谢谢。 最佳答案 我使用了以下方法并且工作得很好。publicstaticBitm

OpenGL-绘制一个正方体

importpygamefrompygame.localsimport*fromOpenGL.GLimport*fromOpenGL.GLUimport*verticies=((1,-1,-1),(1,1,-1),(-1,1,-1),(-1,-1,-1),(1,-1,1),(1,1,1),(-1,-1,1),(-1,1,1))edges=((0,1),(0,3),(0,4),(2,1),(2,3),(2,7),(6,3),(6,4),(6,7),(5,1),(5,4),(5,7))defCube():glColor3f(0.0,1.0,1.0)glPolygonMode(GL_FRONT,GL

Android OpenGL ES - 如何绘制填充的凹多边形?

我正在使用OpenGLES创建适用于Android的2DOpenstreetmap渲染应用程序。不幸的是,我正在努力绘制由大约50个或更多点组成的凹多边形。为了完成我的多边形填充,我正在使用GL10.GL_TRIANGLE_FAN:gl.glVertexPointer(2,GL10.GL_FLOAT,0,vertBuff);//size=2because2Dgl.glDrawElements(GL10.GL_TRIANGLE_FAN,pointCount,GL10.GL_UNSIGNED_SHORT,indexBuff);只要我的多边形不太复杂,这种方法就可以正常工作,例如绘制这样的多

android - 增强现实 - 将 GPS 映射到 OpenGL

我正在编写一个AndroidAR应用程序并让我的引擎正常工作,但它包含一个我似乎无法修复的奇怪行为。我在相机图像上覆盖OpenGL表面,并相应地将3D对象放置在View中。如果我将虚拟数据用于我的AR对象的位置,即LAT10LON10在OpenGL表面上变成x=10y=10,那么叠加效果很好。但是,如果我为我的LAT和LON使用直接GPS坐标(例如LAT12.34567890LON100.23456789),那么我的所有对象要么在它们的位置周围移动,要么根本不出现。我知道使用float和OpenGL框架存在问题,但我一直在阅读,但仍然无法阻止这种行为。有没有其他人有这个问题?我应该在我

Android:运行繁重的后台任务时 OpenGL 渲染暂停

我通过OpenGL渲染对象,并且在大多数情况下获得了60fps的流畅帧率。直到我在后台线程中做了一些繁重的事情,比如从RESTAPI中获取东西,处理它,以及将对象添加到图形中(低优先级的东西,我更关心UI的流动性)。然后渲染器将暂停很长时间,最多1秒(大约只要后台线程运行),然后恢复,就好像什么也没发生一样。我注意到这一点是因为同时启动了动画,并且在此期间卡住了。后台线程设置为最低优先级,垃圾收集确实需要100-200毫秒,但不是整秒。当我在后台任务中的任意位置设置调试点时,渲染继续正常进行,没有任何延迟。有没有可能是我繁重的后台线程让OpenGL线程饿死了?如果可以,我该怎么办?

android - 在 OpenGL ES 2.0 中写入深度缓冲区/深度值的解决方法

我需要写入Android设备(OpenGLES2.0)上的深度缓冲区。由于gl_FragDepth在OGLES2.0下不可写,我必须找到解决方法。我实际上想通过光线转换来渲染球体,类似于:http://www.sunsetlakesoftware.com/2011/05/08/enhancing-molecules-using-opengl-es-20.然而,本网站上解释的解决方案(使用特殊的glBlendEquation编写深度的屏幕外渲染channel)仅适用于Apple设备,不适用于Android,因为GL_MIN_EXT-混合是不支持。在我的Tegra3平板电脑上,我能够实现这

android - "ERROR: OpenGLES initialization failed!"在 CentOS 与 android SDK

当我运行时:/usr/local/android-sdk-linux/tools/emulator-avdtst我得到错误:Failedtoopenlib64EGL_translatorFailedtoinit_egl_dispatchemulator:ERROR:OpenGLESinitializationfailed!emulator:ERROR:OpenGLESemulationlibrarycouldnotbeinitialized!emulator:WARNING:CouldnotinitializeOpenglESemulation,usingsoftwarerendere