标签: opengl-es

围绕给定点2D的圆周运动

我想在给定点周围的圆上移动一个对象.我在Android上使用OpenGL,而我的视口是横向模式下的屏幕分辨率(1280*800).我想要旋转对象的点是例如(500,300),这是用户按下的位置.我也有所需圆圈的半径r.总结一下,我是圆的中心,半径和角度(我希望在游戏循环的每次迭代中移动对象的数量)

到目前为止我试过这个:

this.setPosX(((float)Math.cos(angle)*radius + center.x) * width);
this.setPosY(((float)Math.sin(angle)*radius + center.y) * height);
Run Code Online (Sandbox Code Playgroud)

这将创建沿省略号的运动,而不是圆圈......

谁能帮帮我吗?

math android opengl-es rotation

2
推荐指数
1
解决办法
2943
查看次数

我们可以mipmap深度纹理吗?

我想知道,是否有可能mipmap深度纹理.如果,是的,它将如何工作,并使用它.

搜索很多,但在任何地方都没有得到很好的解释.

opengl-es opengl-es-2.0 glsles

2
推荐指数
1
解决办法
313
查看次数

使用VBO上传顶点后更改颜色

编辑:Apple的工作编码示例在此链接中找到:http: //developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/TechniquesforWorkingwithVertexData/TechniquesforWorkingwithVertexData.html

在为200 x 200个正方形的固定网格创建顶点之后,我通过使用VBO将顶点发送到GPU来渲染它.我怎样才能更新顶点的颜色?数百个顶点的颜色会频繁变化 - 每隔几帧.

我以前解决了不使用VBO的问题.我创建了顶点和颜色数组,并使用以下代码渲染顶点.我通过更新数组改变了顶点的颜色triangleColours:

-(void)render {

    glClearColor(clearColor.r, clearColor.g, clearColor.b, clearColor.a);
    glClear(GL_COLOR_BUFFER_BIT);

    [effect prepareToDraw];

    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glVertexAttribPointer(GLKVertexAttribPosition, 2,
                          GL_FLOAT, GL_FALSE, 0, triangleVertices);

    glEnableVertexAttribArray(GLKVertexAttribColor);
    glVertexAttribPointer(GLKVertexAttribColor, 4,
                          GL_FLOAT, GL_FALSE, 0, triangleColours);


    glDrawArrays(GL_TRIANGLES, 0, numTriangleVertices);

    glDisableVertexAttribArray(GLKVertexAttribPosition);
    glDisableVertexAttribArray(GLKVertexAttribColor);
}
Run Code Online (Sandbox Code Playgroud)

虽然上面的代码有用,但它吃了很多电池,所以现在我正试着用VBO做.顶点不会改变位置,所以我理解VBO是一个很好的选择,但是如何改变顶点的颜色呢?

这是我目前的代码简化为只绘制一个方块:

编辑:我如何更新下面的代码,以便它们更改时只上传顶点颜色?VBO设置代码和绘图代码应该如何变化?如何更新我的verticesColours颜色数组然后调用glBufferSubData()?

    // Setup vertices and VBO

    // Vertices for a single square

    const Vertex Vertices[] = {

        // position and colour
        {{-20, -20}, {1, 1, 1, 1}},
        {{-20, -20}, {1, 1, 1, 1}},
        {{-20, -20}, {1, …
Run Code Online (Sandbox Code Playgroud)

iphone opengl-es objective-c vbo opengl-es-2.0

2
推荐指数
1
解决办法
1463
查看次数

libgdx中帧缓冲区的结果不明确

我在libgdx中使用FrameBuffer类得到以下奇怪的结果.

在此输入图像描述

以下是产生此结果的代码:

// This is the rendering code
@Override
public void render(float delta) {
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

    stage.act();
    stage.draw();

    fbo.begin();
    batch.begin();
    batch.draw(heart, 0, 0);
    batch.end();
    fbo.end();  

    test = new Image(fbo.getColorBufferTexture());
    test.setPosition(256, 256);
    stage.addActor(test);
}

//This is the initialization code
@Override
public void show() {
    stage = new Stage(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), false);
    atlas = Assets.getAtlas();
    batch = new SpriteBatch();

    background = new Image(atlas.findRegion("background"));     
    background.setFillParent(true); 
    heart = atlas.findRegion("fluttering");
    fbo = new FrameBuffer(Pixmap.Format.RGBA8888, heart.getRegionWidth(), heart.getRegionHeight(), false);

    stage.addActor(background);
    Image temp = new Image(new …
Run Code Online (Sandbox Code Playgroud)

opengl fbo opengl-es framebuffer libgdx

2
推荐指数
1
解决办法
2251
查看次数

OpenGL ES性能不同的混合模式

我需要在渲染场景上应用全屏摄影般的晕影效果.显然,我必须使用混合来实现这一目标.我想选择最快的混合模式,因为它将应用于所有屏幕空间.

OpenGL ES中的一些混合模式比另一个更快吗?或者任何混合模式是否以相同的填充率工作?到目前为止,我还没有在互联网上找到任何资源说某些混合模式比另一种更慢或更快,所以我决定在SO上提出这个问题.

这是针对Android应用程序的,所以我理解当然这种行为可能取决于GPU供应商,但是对于更快的混合可能有一些常见的考虑因素?

performance android opengl-es opengl-es-2.0

2
推荐指数
1
解决办法
1419
查看次数

使用openGL和cocos2D绘制大量行的最佳方法是什么?

我有一系列2d顶点,表示用于绘制网格的线条.有大约900个线段要绘制(网格使用弹簧物理扭曲,这就是为什么我不只为每一行和col绘制一条线).cocos2D有一个内置的ccDrawLine函数,它绘制得很好,但我认为这可能是低效的,因为它为每个线段调用glDrawArrays.你如何有效地绘制大量的线段?作为奖励,请使用openGL推荐一个良好的2D绘图实践来源.

iphone opengl-es objective-c cocos2d-iphone ios

2
推荐指数
1
解决办法
1910
查看次数

如何使用片段着色器在OpenGL ES中绘制球体错觉?

我正在使用这个简单的功能在面向相机的3D空间中绘制四边形.现在,我想使用片段着色器来绘制内部球体的错觉.但是,问题是我是OpenGL ES的新手,所以我不知道怎么做?

void draw_sphere(view_t view) {

    set_gl_options(COURSE);

    glPushMatrix();
    {
        glTranslatef(view.plyr_pos.x, view.plyr_pos.y, view.plyr_pos.z - 1.9);
#ifdef __APPLE__
#undef  glEnableClientState
#undef  glDisableClientState
#undef  glVertexPointer
#undef  glTexCoordPointer
#undef  glDrawArrays

        static const GLfloat vertices []=
        {
            0, 0, 0,
            1, 0, 0,
            1, 1, 0,
            0, 1, 0,
            0, 0, 0,
            1, 1, 0
        };

        glEnableClientState(GL_VERTEX_ARRAY);
        glVertexPointer(3, GL_FLOAT, 0, vertices);
        glDrawArrays(GL_TRIANGLE_STRIP, 0, 6);
        glDisableClientState(GL_VERTEX_ARRAY);
#else
#endif
    }
    glPopMatrix();
}
Run Code Online (Sandbox Code Playgroud)

更准确地说,我想实现这个目标: 使用OpenGL ES 2.0增强分子

shader opengl-es

2
推荐指数
1
解决办法
3081
查看次数

统一禁用iphone 4的视网膜

我们使用Unity(基本版)开发iOS应用程序.
在iPhone 4上我们有低fps.
我们想在iPhone 4上使用非视网膜320*480屏幕尺寸(和渲染缓冲区320*480).
我们认为这将提高iPhone 4的性能.
我们知道如何通过代码在iOS应用程序中执行此操作(例如此处显示的openGL ES视网膜支持).
我们怎样才能通过Unity实现这一目标?
有什么办法吗?

iphone screen opengl-es unity-game-engine ios

2
推荐指数
1
解决办法
1328
查看次数

glDrawElements没有显示任何内容

我正在尝试在iOS上学习OpenGL.我正在学习本教程.

http://www.raywenderlich.com/5235/beginning-opengl-es-2-0-with-glkit-part-2

我确定我会仔细按照步骤操作,但是当我走到尽头时,屏幕上看不到任何形状.

https://gist.github.com/seanhess/5356598

我确实看到背景颜色在变化,所以OpenGL一般都在工作.只是对glDrawElements的调用似乎没有做任何事情.

glDrawElements(GL_TRIANGLES, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_BYTE, 0);
Run Code Online (Sandbox Code Playgroud)

他有一些演示代码,但它与你在教程中编写的代码不一样,我想了解为什么在粘贴之前这不起作用.

应该在哪里绘制GLKBaseEffect?我看不出我们是如何使用它的.

opengl-es objective-c ios opengl-es-2.0 glkit

2
推荐指数
1
解决办法
1228
查看次数

了解OpenGLES iOS中的缓冲区

我的理解:有一种所谓的帧缓冲.它是缓冲对象的指针数组.缓冲区对象可以是例如渲染缓冲区,纹理缓冲区或其他.如果我想画一些东西,我将渲染缓冲区附加到帧缓冲区,绘制到它,最后调用一个方法将其发送到屏幕.

1)到目前为止这是正确的吗?

我不明白的是:

2)我想我在某处读到了在创建上下文时创建帧缓冲区.唉,我看不到我看到的地方了.但是,如果帧缓冲区真的被创建,为什么我要打电话glGenFramebuffersOES(1, &framebuffer)glBindFramebufferOES(GL_FRAMEBUFFER_OES, framebuffer)?据我所知,第一个创建一个新的帧缓冲区,其中一个空间用于附件,第二行设置上下文的帧缓冲区指针framebuffer.但假设我已经在上下文中有一个帧缓冲区为什么我无法检索它并将我的渲染缓冲区附加到那个?

3)什么是"默认帧缓冲区"?它是一个名为0的帧缓冲区.如果已经有一个默认的帧缓冲区,为什么我要绘制时必须创建一个新缓冲区?

iphone opengl-es framebuffer ios

2
推荐指数
1
解决办法
980
查看次数