有哪些教程和库可以帮助初学者使用OpenGL-ES在Android上开发2D和3D游戏?我正在寻找可以帮助我学习OpenGL-ES的教程,我正在寻找可以让初学者在OpenGL-ES中更轻松的OpenGL-ES库.
由于Android仍然很小,我想也可以阅读iPhone OpenGL-ES教程,因为我认为OpenGL-ES的功能大致相同.
我找到了以下有用的信息,我希望分享这些信息:
Android教程:
其他Android OpenGL-ES信息:
iPhone OpenGL-ES教程(OpenGl-ES信息可能很有用):
对于初学者可能用来获得更简单的OpenGL-ES实践经验的库,我只发现了最近启动的Rokon,因此有很多漏洞和漏洞.如果我们想出售我们的游戏,那就是gnuGPL许可(目前),这意味着它无法使用.
还有什么呢?
我正在为Android平台开发一个小型的OpenGL游戏,我想知道是否有一种简单的方法可以在渲染帧的顶部渲染文本(比如带有玩家得分的HUD等).文本也需要使用自定义字体.
我已经看过使用View作为叠加层的示例,但我不知道是否要这样做,因为我可能希望稍后将游戏移植到其他平台.
有任何想法吗?
嗯,这是我的要求.我不知道OpenGL,我不愿意学习它,我想直接学习OpenGL ES,因为我的目标是将我的开发定位到android.我想学习OpenGL ES以开发我的2D游戏.我选择它用于演出目的(因为基本的SurfaceView绘图在RT游戏方面效率不高).我的问题是:从哪里开始?我花了一个多月的时间浏览谷歌并阅读/尝试我在任何地方找到的一些教程/示例,但说实话,它没有多大帮助,这有两个原因:
我也尝试过阅读一些源代码(例如:replica island),但代码太复杂了,并且包含很多不必要的东西; 结果:我迷失了100个带有奇怪类名和东西的.java文件.
我想没有像我正在寻找的那样的课程,但是我会很高兴如果有人能给我一些指导和一些链接可能会了解我的目标(只有OpenGL ES 2D Sprites渲染!没什么3D ).
我已经使用libGDX实现了一些屏幕,这显然会使用ScreenlibGDX框架提供的类.但是,这些屏幕的实现仅适用于预定义的屏幕尺寸.例如,如果精灵用于640 x 480大小的屏幕(4:3宽高比),它将无法按预期在其他屏幕尺寸上工作,因为精灵与屏幕边界相同并且不会缩放到屏幕尺寸一点都不 此外,如果libGDX提供了简单的缩放,我面临的问题仍然存在,因为这会导致游戏画面的宽高比发生变化.
在对互联网进行研究之后,我遇到了一个讨论同一问题的博客/论坛.我已经实现了它,到目前为止它工作正常.但我想确认这是否是实现这一目标的最佳选择,还是有更好的选择.下面是代码,以显示我如何处理这个合法的问题.
论坛链接:http://www.java-gaming.org/index.php? topic = 25685.new
public class SplashScreen implements Screen {
// Aspect Ratio maintenance
private static final int VIRTUAL_WIDTH = 640;
private static final int VIRTUAL_HEIGHT = 480;
private static final float ASPECT_RATIO = (float) VIRTUAL_WIDTH / (float) VIRTUAL_HEIGHT;
private Camera camera;
private Rectangle viewport;
// ------end------
MainGame TempMainGame;
public Texture splashScreen;
public TextureRegion splashScreenRegion;
public SpriteBatch splashScreenSprite;
public SplashScreen(MainGame maingame) {
TempMainGame = maingame;
}
@Override
public …Run Code Online (Sandbox Code Playgroud) 为OpenGL着色器程序设置属性位置时,您将面临两个选项:
链接之前的glBindAttribLocation()以显式定义属性位置.
要么
链接后的glGetAttribLocation()以获取自动分配的属性位置.
使用一个而不是另一个有什么用?
在实践中哪一个(如果有的话)更受欢迎?
我正在研究一个opengl项目.我使用了一些图像(2个用于xy刻度)和标签(8个)在屏幕上显示刻度.我的第一个观点是tableview我去的地方openglView.但每当我回去从openglView到tableView它给我这个错误和应用程序崩溃.
"这个UIView似乎是NSISVariable的代表,它对此一无所知.这是一个内部的UIKit错误."
有什么建议?这是因为我包含了太多的UI元素,除了那些图像和标签我也使用了一些按钮.而且我也适用affineTransform于那些图像和标签以及一个按钮.
确切的错误是:
2013-01-31 12:20:18.743 EMtouch[50496:12203] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '{ Rows:
UILayoutContainerView:0x9835660.Height == 480 + 1*0x7e53030.marker + 1*0x7e546c0.marker
UILayoutContainerView:0x9835660.Width == 320 + 1*0x7e52f90.marker + 1*0x7e54330.marker
UILayoutContainerView:0x9835660.minX == 0 + 1*0x7e52ca0.marker + -0.5*0x7e52f90.marker
UILayoutContainerView:0x9835660.minY == 0 + 1*0x7e52fd0.marker + -0.5*0x7e53030.marker
UINavigationTransitionView:0x9837ea0.Height == 480 + 1*0x7e51bf0.marker + 1*0x7e53030.marker + 1*0x7e546c0.marker
UINavigationTransitionView:0x9837ea0.Width == 320 + 1*0x7e519c0.marker + 1*0x7e52f90.marker + 1*0x7e54330.marker
UINavigationTransitionView:0x9837ea0.minX == 0 + 1*0x7e51940.marker + …Run Code Online (Sandbox Code Playgroud) 有没有比使用glReadPixels更快的方式来访问帧缓冲区?我需要对帧缓冲区中的小矩形渲染区域进行只读访问,以便在CPU中进一步处理数据.性能很重要因为我必须重复执行此操作.我在网上搜索并发现了一些方法,比如使用像素缓冲区对象和glMapBuffer,但似乎OpenGL ES 2.0不支持它们.
(编辑:我在我的增强现实框架中添加了最好的工作方法,现在也考虑了陀螺仪,这使它再次更加稳定:DroidAR框架)
我编写了一个TestSuite来了解如何根据您获得的数据计算旋转角度SensorEventListener.onSensorChanged().我真的希望你能完成我的解决方案,以帮助那些像我一样遇到同样问题的人.这是代码,我想你会在阅读之后理解它.
随意改变它,主要的想法是实现几种方法将方向角发送到opengl视图或任何其他需要它的目标.
方法1到4正在工作,它们直接将rotationMatrix发送到OpenGl视图.
方法6现在也可以工作,但我没有解释为什么必须进行旋转yx z ..
所有其他方法都没有工作或有问题,我希望有人知道让他们工作.我认为最好的方法是方法5,如果它可行,因为它是最容易理解,但我不确定它是多么有效.完整的代码没有优化,所以我建议不要在项目中使用它.
这里是:
/**
* This class provides a basic demonstration of how to use the
* {@link android.hardware.SensorManager SensorManager} API to draw a 3D
* compass.
*/
public class SensorToOpenGlTests extends Activity implements Renderer,
SensorEventListener {
private static final boolean TRY_TRANSPOSED_VERSION = false;
/*
* MODUS overview:
*
* 1 - unbufferd data directly transfaired from the rotation matrix to the
* modelview matrix
*
* 2 …Run Code Online (Sandbox Code Playgroud) 我有一个GLSurfaceView设置和渲染预期使用a GLSurfaceView.Renderer.我的应用程序使用Android支持包中的片段.当我导航到一个新的片段surfaceDestroyed被调用但是当我通过backstack回到片段时GLSurfaceView将不会呈现,调用requestRender不会导致onDraw调用.
我知道我需要调用onResume和onPause表面视图,我从托管片段做这个,但它似乎没有解决问题.关于htis方法的所有例子都参考了活动,这可能是问题吗?如果是这样,你如何使用GLSurfaceView片段内部.
非常感谢任何见解,我很高兴发布代码,但它似乎更像是一个普遍的问题,
谢谢