标签: opengl-es

PVR纹理与OpenGL ES中的PNG

我正在为iPhone开发一个渲染大量纹理的2D应用程序.它们中的大多数都是从具有Alpha透明度的PNG文件加载的.作为测试,我一直在玩PVR测试,看看是否有任何性能差异.

PNG纹理加载了崩溃着陆示例附带的Texture2D类.PVR-testures使用PVRTextureLoader示例中的PVRTexture类加载.我使用Apple的texturetool创建PVR纹理.

作为测试,我渲染背景(512*512),并在36个90*64像素精灵(来自512*512纹理)的顶部透明.PVR纹理渲染大约58 fps,PNG渲染47 fps.这是我可以期待的还是差异会更大?另外,texturetool生成的纹理看起来非常糟糕,PVRTexTool更好吗?

iphone opengl-es

21
推荐指数
2
解决办法
2万
查看次数

如何在使用Android的GLSurfaceView.RENDERMODE_CONTINUOUSLY时限制帧率?

我有一个在Android中运行JNI的C++游戏.由于场景复杂性,帧速率从大约20-45fps变化.任何高于30fps的东西对于游戏都是愚蠢的; 它只是燃烧电池.我想将帧速率限制为30 fps.

  • 我可以切换到RENDERMODE_WHEN_DIRTY,并使用Timer或ScheduledThreadPoolExecutor来requestRender().但这增加了一大堆额外的移动部件,这些部件可能会或可能不会始终正确地工作.
  • 当事情快速运行时,我尝试注入Thread.sleep(),但这对于小时间值似乎根本不起作用.它可能只是将事件支持到队列中,而不是实际上暂停.

是否有隐藏在API中的"capFramerate()"方法?有任何可靠的方法吗?

android opengl-es

21
推荐指数
2
解决办法
3万
查看次数

Android上的OpenGLES - IllegalStateException:已为此实例调用setRenderer

我是Android上OpenGL-ES的新手,请原谅我的愚蠢问题.我正在为Android v2.2 - SDK#8构建这个程序.我的平板电脑最多支持Android v3.1

我正在尝试通过developer.android.com上的教程为Android设置OpenGL-ES环境.程序编译得很好,它应该在设备上显示一个简单的蓝屏.但是,当我尝试在我的Android设备上运行它时,我得到了"IllegalStateException:已经为此实例调用了setRenderer"错误.

以下是我的代码:

public class TA_SpaceActivity extends Activity 
{
    private MyGLSurfaceView myGLView;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        myGLView = new MyGLSurfaceView(this); //NOTE: this is where the app crashed
        setContentView(myGLView);
    }
}

class MyGLSurfaceView extends GLSurfaceView
{
    public MyGLSurfaceView(Context context) 
    {
        super(context);
        setRenderer (new MyRenderer());
        setEGLContextClientVersion(2);
        setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
    }
}

class MyRenderer implements GLSurfaceView.Renderer
{
    public void onSurfaceCreated(GL10 unsued, EGLConfig config)
    {
        GLES20.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
    }

    public void onDrawFrame(GL10 unused)
    {
        GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

eclipse android opengl-es

21
推荐指数
1
解决办法
6685
查看次数

截取Android OpenGL的截图

我正在尝试截取Android OpenGL的截图.

我找到的代码如下:

nt size = width * height;
    ByteBuffer buf = ByteBuffer.allocateDirect(size * 4);
    buf.order(ByteOrder.nativeOrder());
    glContext.glReadPixels(0, 0, width, height, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, buf);
    int data[] = new int[size];
    buf.asIntBuffer().get(data);
    buf = null;
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
    bitmap.setPixels(data, size-width, -width, 0, 0, width, height);
    data = null;

    short sdata[] = new short[size];
    ShortBuffer sbuf = ShortBuffer.wrap(sdata);
    bitmap.copyPixelsToBuffer(sbuf);
    for (int i = 0; i < size; ++i) {
        //BGR-565 to RGB-565
        short v = sdata[i];
        sdata[i] = (short) (((v&0x1f) << …
Run Code Online (Sandbox Code Playgroud)

android opengl-es

20
推荐指数
3
解决办法
2万
查看次数

如何在Linux上开发OpenGL ES(GLES)2.0应用程序?

我想在我的Ubuntu机器上开发OpenGL ES 2.0应用程序.我找不到任何支持GLES 2.0的库/模拟器.有什么建议?

linux ubuntu opengl-es

20
推荐指数
3
解决办法
2万
查看次数

20
推荐指数
2
解决办法
2万
查看次数

简单的GLSL卷积着色器非常慢

我正在尝试在iOS的OpenGL ES2.0中实现2D轮廓着色器.这太疯狂了.如在5fps慢.我已将其跟踪到texture2D()调用.但是,如果没有这些,任何卷积着色器都是可撤消的.我尝试过使用lowp而不是mediump,但是一切都只是黑色,虽然它确实给了另外5fps,但它仍然无法使用.

这是我的片段着色器.

    varying mediump vec4 colorVarying;
    varying mediump vec2 texCoord;

    uniform bool enableTexture;
    uniform sampler2D texture;

    uniform mediump float k;

    void main() {

        const mediump float step_w = 3.0/128.0;
        const mediump float step_h = 3.0/128.0;
        const mediump vec4 b = vec4(0.0, 0.0, 0.0, 1.0);
        const mediump vec4 one = vec4(1.0, 1.0, 1.0, 1.0);

        mediump vec2 offset[9];
        mediump float kernel[9];
        offset[0] = vec2(-step_w, step_h);
        offset[1] = vec2(-step_w, 0.0);
        offset[2] = vec2(-step_w, -step_h);
        offset[3] = vec2(0.0, step_h);
        offset[4] = vec2(0.0, 0.0); …
Run Code Online (Sandbox Code Playgroud)

opengl-es glsl filter convolution opengl-es-2.0

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

是否可以在片段着色器中绘制线条粗细?

考虑到我用GL_LINES画线,我是否可以在片段着色器中添加线条粗细?我看到的大多数示例似乎只访问片段着色器中基元内的纹素,并且线条粗细着色器需要写入线基元外部的纹素以获得厚度.但是,如果可能的话,一个非常小的,基本的例子就会很棒.

opengl-es opengl-es-2.0

20
推荐指数
3
解决办法
3万
查看次数

如何学习和使用OpenGL ES 2.0?我只是不明白 - 严肃的Qn.

这是一个严肃的问题,我在理解它与完全没有之间"陷入困境".我对阅读不同资源的时间非常困惑,并希望有人指出我正确的方向.

我正在使用Android平台,直到现在我已经使用了Canvas一些OpenGL ES 1.0,但主要是通过引擎或已经构建的代码来尝试和理解它.

我的目标是实际理解OpenGL ES 2.0.我不想直接去复杂的东西,从简单的东西开始,但我只是不知道怎么做.我可以得到一个正方形,我可以设置相机和矩阵; 告诉你实话我真的不明白整个矩阵系统及其工作原理,如果我是对的,它是一个固定功能管道,你不需要改变OpenGL ES 1.0但现在它是一个可编程管道你必须自己设置.

我不知道如何使用坐标系,我知道原点是设备的中心,每次转向边缘都是1,所以从中心到左边它将是负1.

然而,有一些方法可以将它变成一个不同的坐标系,也许只是使用比例或乘法矩阵来将协调设置为我曾经习惯的东西Canvas.

基本上我需要帮助的是如何从这里进步?我觉得好像到了某个地方,但我仍然无处可去.

我真的需要一些关于如何正确使用的建议OpenGL ES 2.0,因为现在我正在计划的是一个简单的2D游戏,也许是侧滚动,所以我将不得不弄乱相机矩阵.

感谢您的时间,我将非常感谢您的帮助.

*我对转换矩阵不太感兴趣,因为我不认为2D游戏真的会使用它,也许只有当我镜像角色的精灵所以它看起来好像他走的是另一个方向,但我很确定通过改变协调和宽度可以使这变得简单.

android opengl-es matrix game-engine opengl-es-2.0

20
推荐指数
3
解决办法
2万
查看次数

对UIView的扭曲\弯曲效果?

我试图获得与图片中描述的效果类似的效果.左边的白色区域是不是原来的照片,它推动像素的路程.我尝试过使用Core Image(它为此提供了一些近距离效果),但它对我的需求来说太慢了.我需要效果很快,所以我可以让它对触摸做出反应.

在iOS sdk中是否存在一个与UIVIew类似的关闭效果\动画?(我找不到任何东西)如果没有,有人可以提供如何使用OpenGL攻击它吗?(代码示例非常受欢迎)

(这个效果将在我正在编写的开源类中占据重要位置,因此如果有更简单的解决方案可用,我宁愿不使用GPUImage等第三方类(我将此类作为依赖项免费) )

在此输入图像描述在此输入图像描述在此输入图像描述

opengl-es objective-c ios warp

20
推荐指数
2
解决办法
6802
查看次数