所以,我们刚刚购买了Iphone开发许可证,但我们正在寻找一些优秀的3D/2d opengl es游戏教程.
有谁知道这方面的任何好教程?
谢谢
-Techy
iPhone SDK有一个使用ES 2.0和一组(顶点和片段)GLSL着色器来渲染变色框的示例.有没有关于如何使用此API渲染简单纹理的示例?我基本上想要一个四边形,并在其上绘制纹理.
旧的ES 1.1 API根本不起作用,所以我需要一些帮助才能开始.大多数着色器引用主要讨论高级着色主题,但我真的不确定如何告诉着色器使用绑定纹理,以及如何引用UV.
谢谢!
我有一个RGB值的字节数组,就像*.bmp文件的内容(没有标题)一样.我想要做的是,使用OpenGL在Android上绘制相应的位图.
似乎OpenGL ES没有单一的API可以做到,这是真的吗?
如果是的话,我该怎么做?
PS:实际上,我可以用JAVA代码绘制它,但它太慢并且花费太多的CPU时间.所以我想尝试用OpenGL绘制它.还有其他建议吗?或者OpenGL可能不是正确的答案?
谢谢你们!
我正在研究Android上的基本增强现实应用程序.到目前为止我所做的是用opencv检测一个正方形然后使用cvFindExtrinsicCameraParams2()我计算了一个旋转和平移向量.为此,我使用了4个对象点,它们只是(0,0,0)方形的角和图像中方形的4个角.
这给我一个非常好的旋转和平移矩阵.我还用cvRodrigues2()计算了旋转矩阵,因为使用它比旋转矢量更容易.只要我用它们在图像中绘制一些点就可以了.然而,我的下一步是将这些向量和矩阵传递回java,然后使用它们与OpenGL在OpenGLView中绘制一个正方形.正方形应该恰好位于OpenGLView后面显示的图像中的正方形.
我的问题是我找不到在OpenGL中使用旋转矩阵和平移向量的正确方法.我开始使用与openCV函数完全相同的对象点.然后我以几乎任何可能的方式应用旋转矩阵和平移向量.遗憾的是,这些方法都没有产生任何接近我希望的结果.谁能告诉我如何正确使用它们?
到目前为止,我得到的"最接近"的结果是将整个矩阵随机乘以-1.但大多数情况下,方块仍然看起来镜像反转或旋转180度.所以我想这只是一个幸运的打击,但不是正确的方法.
This is just a quick question before I dive deeper into converting my current rendering system to openGL. I heard that textures needed to be in base 2 sizes in order to be stored for rendering. Is this true?
My application is very tight on memory, but most of the bitmaps are not powers of two. Does storing non-base 2 textures consume more memory?
我每次想要绘制它们时都会向GPU发送顶点数组(32位浮点数),但这并不高效,所以我切换到顶点缓冲区对象来缓存GPU中的顶点数组.
它工作正常,但我想知道是否有办法在不返回原始顶点数组的情况下确定给定VBO的大小?这是我正在努力的过程:
我可能错过了一些非常明显的东西.谢谢你的任何建议!
我正在使用OpenGL为iPad创建绘图应用程序(文本).我已经看过Apple的示例GLPaint,我的应用程序现在基于该代码.我的应用程序应该只用于绘制文本,而不是用于绘制图片.
好吧,我的App工作,我可以写一些文字.但写作并不是很好,写作并不好玩.绘制路径不是平滑的,它是有角度的,因为我从一个点到另一个点绘制一条线.并且路径到处都有相同的宽度.我的想法是:当你快速写作时,线条比你写作慢的时候要薄.它应该像用真笔写作一样.
如何让路径看起来更顺畅?如何根据书写速度改变线条的宽度?
在这里你可以看到我的意思:

我正在Android上编写一个混合2D/3D游戏,我无法确定我可以使用多少纹理内存.有没有办法确定OpenGL ES中的最大纹理内存?
我有自己的纹理缓存,想知道纹理内存的最大阈值.我正在使用activityManager.getMemoryInfo(mi),但在某些设备上,当我尝试分配纹理(还有更多已经在内存中)时,应用程序崩溃(EGL_BAD_ALLOC).当我将此阈值设置为较低值时,一切似乎都可以.有谁有想法吗?或者最终如何确定纹理分配不成功,而不是崩溃.
我想绘制一个球体,我知道如何使用glBegin()和glEnd()之类的调用在OpenGL中完成它.
但ES中没有任何内容.
建议/教程链接?
在android上,GLSurfaceView文档说这个:
当活动暂停并恢复时,必须通知GLSurfaceView.GLSurfaceView客户端需要在活动暂停时调用onPause(),并在活动恢复时调用onResume().这些调用允许GLSurfaceView暂停和恢复渲染线程,并允许GLSurfaceView释放并重新创建OpenGL显示.
所以我应该在我的活动中做这样的事情:
public void onPause() {
myGlSurfaceView.onPause();
}
public void onResume() {
myGlSurfaceView.onResume();
}
Run Code Online (Sandbox Code Playgroud)
我在我的代码中观察到,如果我不调用onPause(),onResume()然后按下主页按钮时上下文不会丢失,那么我可以在应用程序之间切换,然后返回到我的游戏,一切正常.我看到的是,如果我使用后退按钮关闭游戏,那么当我再次打开它时屏幕是黑色的,但我可以改变后退按钮行为以完全关闭游戏并避免这个问题.
所以我的问题是:什么时候OpenGL上下文被破坏了?如果我不打电话onPause(),onResume()我可以假设它永远不会被销毁吗?
编辑:
我的目标是Android 2.2,因此setPreserveEGLContextOnPause()不适合我.