Tag: opengl es

三星Galaxy SL的球体上不显示纹理

我正在研究Android的Rajawali框架。 我尝试了他们的第一个基本教程,如下所示: public class RRenderer extends RajawaliRenderer { private DirectionalLight mLight; private BaseObject3D mSphere; public RRenderer(Context context) { super(context); setFrameRate(60); } protected void initScene() { mLight = new DirectionalLight(1f, 0.2f, 1.0f); // set the direction mLight.setColor(1.0f, 1.0f, 1.0f); mLight.setPower(2); Bitmap bg = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.earthtruecolor_nasa_big); DiffuseMaterial material = new DiffuseMaterial(); mSphere = new Sphere(1, 18, 18); […]

在游戏暂停之前复制当前屏幕的图片使其模糊并在游戏暂停期间渲染到屏幕

我无法在游戏暂停状态下实现游戏暂停模糊屏幕渲染。 当用户暂停屏幕时,我需要拍摄当前屏幕的图片或纹理,即游戏运行状态。 也许将它存储到内存中,模糊然后将其渲染到屏幕以实现漂亮的模糊,高斯模糊效果就像他们在愤怒的小鸟等流行游戏中一样。 我尝试使用截图实现,但屏幕截图的过程使游戏冻结了几秒钟,这是不好的。 这是我的渲染代码的一部分 private void updatePlayerForUserInput(float delta) { if (Gdx.input.isKeyPressed(Keys.P) || pause) { ScreenShotSaver.saveScreenShot(); state = State.GAME_PAUSED; if(!DEBUG_MODE) { toggleGestureProcessor(false); setBackgroundTexture(new TextureRegion(applyBlurEffect(Gdx.files.external(“madboy/screenshot.png”)))); gameScreenGamePauseMenu.sendInMenu(); } } } 有人可以像这样帮助实现屏幕 这是我想要的效果的一个例子1: 在这里输入链接描述这是另一个,类似的东西虽然2: 在这里输入链接描述 这是我的更新逻辑的一部分,具体取决于游戏状态 private void render(float delta) { switch (state) { case GAME_READY: renderReady(); break; case GAME_RUNNING: renderRunning(delta); break; case GAME_PAUSED: renderPaused(); break; case GAME_LEVEL_END: […]

OpenGL es 1.1 – android – 做gl.glDeleteTextures免费video内存吗?

语境: 我使用gl.glGenTextures将2个纹理加载到大小为2的int []中,然后将纹理绑定到int []的每个槽。 (这很好用,我可以将每个纹理绘制到我准备的“纹理方块”) 现在,我的实际关注点: 运行gl.glDeleteTextures(2,包含2个纹理指针的int [],0)是否清除了生成到我的int []中的2个纹理所使用的内存? 或者这只是释放“纹理名称”?

将纹理拆分为拼图块在libgdx中

由于性能问题,我试图将基于Android Canvas的游戏转换为Libgdx。 目前,我必须生成拼图拼图(动态)时遇到问题。 我做了什么:我使用了android位图操作(Path和PorterDuff)并生成了拼图,然后将其输入到AndroidLauncher中的Libgdx Game对象。 问题1 :有没有更好的方法将位图转换为libgdx核心项目中的拼图块。 (见下文) 问题2 :如何创建一个区域来表示拼图。 (基于边界框或宽度/高度的解决方案不适合),以便用户可以在他/她仅触摸该纹理区域时拖动该部分。 问题3 :检测相邻拼图块何时被用户移近彼此的最佳方法。

W / OpenGLRenderer:点太远了

在构造一个椭圆的向量时,我在LogCat中收到此警告消息: W/OpenGLRenderer: Points are too far apart 4.000000 我很想知道这究竟是什么意思。 我注意到在AOSP中有一个drawArc方法会抛出这个警告,但是,它没有清楚地表示究竟是什么意思。 我需要调整矢量绘图吗? 我是否会看到这些警告中的任何未来错误或错误? 如何让这些警告消退? AOSP参考文件

在opengl es android中随机位置绘制多个立方体

使用OpenGL ES我正在渲染一个简单的立方体类,它将它绘制在屏幕的中心。 但是,我希望能够在屏幕上以随机位置绘制多个这样的立方体,但不知道如何操作。 这是我的自定义表面视图,它将多维数据集呈现为私有类。 我没有包含我的主ActivityManager,因为它不关心。 public class TouchSurfaceView extends GLSurfaceView { private final float TRACKBALL_SCALE_FACTOR=52.0f; private final float TOUCH_SCALE_FACTOR=100.0f/320; private MyGLRenderer mRenderer; private float mPreviousX; private float mPreviousY; public TouchSurfaceView(Context context) { super(context); // TODO Auto-generated constructor stub mRenderer=new MyGLRenderer(); setRenderer(mRenderer); setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); } private class MyGLRenderer implements GLSurfaceView.Renderer{ private MyGLCube mCube; public float mAngleX; public […]

Android opengl在绘制调用后修改顶点数组

在opengl中,在绘制顶点数组后修改顶点数组是不好的做法还是不建议?

LibGDX Stencil在使用SpriteBatch时缓冲

这是我之前的问题和post的延续,见到这里 。 感谢我在那里收到的答案,我觉得我能够更接近我的目标,以及进一步学习OpenGL,但在弄清楚使用模板缓冲区的基础知识后不久,我遇到了一个问题。 似乎当我向模板缓冲区绘制一个精灵时,它会绘制整个方形区域,而不是像我一直无知的那样完全透明的像素。 我模糊地理解为什么会这样,但我不确定解决方案在哪里。 我已经对模板本身进行了相当多的实验,并且我修改了spritebatch用来丢弃低alpha片段的着色器,但我似乎没有看到更大的图片。 作为问题的一个直观例子,我将继续我在上一个问题中使用的例子。 现在,试图在彼此之间画两个圆圈(所以它们完美融合,没有重叠),我得到了这个: 所以,基本上,我是否有办法在复杂的形状上使用LibGDX的Sprite和SpriteBatchfunction来使用模板缓冲区(圆圈仅用作示例),或者我是否需要寻找替代路线? 编辑:: Gdx.gl.glClearColor(1, 1, 1, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT); Gdx.gl.glEnable(GL20.GL_BLEND); Gdx.gl.glBlendFunc(GL20.GL_SRC_ALPHA, GL20.GL_ONE_MINUS_SRC_ALPHA); Gdx.gl.glEnable(GL20.GL_DEPTH_TEST); Gdx.gl.glDepthMask(true); batch.begin(); sprite.draw(batch); sprite2.draw(batch); batch.end(); Gdx.gl.glDisable(GL20.GL_DEPTH_TEST);

没有当前背景的opengl es api

我已经查看了解决方案并且没有真正找到解决方案。 我收到此错误,因为它似乎执行发生在gl线程之外。 但是我不知道如何解决这个问题。 代码如下: public shape() { super(); vertexShader = Shader.loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode); //<============ fragmentShader = Shader.loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode); ByteBuffer buffer = ByteBuffer.allocateDirect(getCoordinates().length * 4); buffer.order(ByteOrder.nativeOrder()); vertexBuffer = buffer.asFloatBuffer(); vertexBuffer.put(getCoordinates()); vertexBuffer.position(0); ByteBuffer drawListBuffer = ByteBuffer.allocateDirect(getOrderOfDraw().length * 2); drawListBuffer.order(ByteOrder.nativeOrder()); listBuffer = drawListBuffer.asShortBuffer(); listBuffer.put(getOrderOfDraw()); listBuffer.position(0); mProgram = GLES20.glCreateProgram(); // create empty OpenGL Program GLES20.glAttachShader(mProgram, vertexShader); // add the vertex […]

在Android上的OpenGL Sphere上绑定video纹理

我正试图在Android上创建一个360video领域 (就像纸板一样)。 我通过在OpenGL ES1.0中渲染一个球体而不是将纹理附加到它来拍摄照片。 之后我可以使用传感器值来旋转球体。 但是,我无法弄清楚如何将图片更改为video 。 我已经尝试使用texSubImage2D()逐帧渲染,但它是超级慢。 我的video可能大约是4k密度,因为我需要一个好的质量,即使它只显示了一小部分。 我已经阅读了一些关于应该如何完成的理论知识(即帧缓冲区,外部纹理,同步等),但我找不到这些东西的任何示例 ,因此一些代码将非常受欢迎 … 这是我如何渲染球体,绘制它并附加纹理(即我的球体类)… import rapid.decoder.BitmapDecoder; public class Sphere { /** Buffer holding the vertices. */ private final List mVertexBuffer = new ArrayList(); /** The vertices for the sphere. */ private final List mVertices = new ArrayList(); /** Buffer holding the texture coordinates. */ private final […]