Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OpenGLES启动_Android_Opengl Es - Fatal编程技术网

Android OpenGLES启动

Android OpenGLES启动,android,opengl-es,Android,Opengl Es,我将iOS应用程序“MohrenJass”以1:1的比例复制到Android上。 ->奥地利纸牌游戏。。良好的培训示例:) 很好地介绍了活动、视图、画布、首选项、API等 现在,我从开发者页面完成了OpenGL ES示例。 我读过关于OpenGL的书,但我有一个问题。 这里面确实有一些观点给了我一些艰难的时刻。 矩阵,顶点,着色器,片段,投影,摄影机,。。。 不是我不明白,而是我只知道“什么时候做这个” 不足以搜索代码中的错误 我想下一步试试复制岛代码, 但是我应该先从OpenGL开始吗 我从O

我将iOS应用程序“MohrenJass”以1:1的比例复制到Android上。 ->奥地利纸牌游戏。。良好的培训示例:) 很好地介绍了活动、视图、画布、首选项、API等 现在,我从开发者页面完成了OpenGL ES示例。 我读过关于OpenGL的书,但我有一个问题。 这里面确实有一些观点给了我一些艰难的时刻。 矩阵,顶点,着色器,片段,投影,摄影机,。。。 不是我不明白,而是我只知道“什么时候做这个” 不足以搜索代码中的错误

我想下一步试试复制岛代码, 但是我应该先从OpenGL开始吗

我从OpenGL->中找到了这个,我更喜欢它,因为它是德语的 (不知道以我的知识立场是否可能)

也发现了这个

还是跳过这个去岛上? 在实践中学习总是一个好方法, 但有时它会打我的脸

我不会尝试下一个简单的2D应用程序。 一个正方形向左/向右移动,跳过另一个正方形或其他东西。 只是为了学习有一天实现我的目标:真正创建一个应用程序:)

我也读了一些关于团结的书,但我认为这不是我应该开始的方式。 可能,如果我知道我在做什么,它会变得容易。。。
好。。我希望你能给我一些小费

对于Unity或Cocos 2D等库,您可以更快地启动应用程序,但它们通常会限制您作为开发人员的能力。如果这是为了创建一个简单的游戏,那么你应该去做。如果目标是获得尽可能多的知识,我建议您尝试使用openGL。这并不容易,也不会随着时间的推移变得更容易,但这是值得的。如果你以后去图书馆,一切都会一目了然

因此,关于教程和示例,有一个事实,它们在大多数情况下是误导性的。他们将向您解释如何完成某项工作,但代码结构将完全无法维护。如果你想要一个好的代码来帮助你一段时间,你应该从创建一个简单的“调试”场景开始,然后你可以添加你以后需要的组件。例如,您应该创建一个可以包含openGL上下文的类,该类稍后应该扩展为包含诸如纹理、着色器等缓存。。。然后,应该有一个类,其中包含绘制到的视图、帧缓冲区以及在其上使用的渲染缓冲区。它应该包含所有必要的工具来初始化视图,启用深度缓冲区,模具缓冲区,显示内容。。。所有这些和更多内容都可以或多或少地从示例和教程中粘贴,您所需要做的就是重新构造它们。这将是您的基本构造,因为您将能够创建要绘制和呈现的所有组件,但不能使用它进行绘制。要测试它,您所能做的就是尝试将缓冲区清除到某个值,并查看是否得到预期的结果

在这之后,有趣的部分开始了:创建类来处理和编译着色器,从图像创建纹理的类,矩阵堆栈,VBO。。。同样,所有这些都可以从web粘贴,但需要重新构造


所以,当你有了所有这些必要的工具,你就可以真正开始游戏本身的工作了。在这一点上,大多数人走错了方向。尝试创建包含在游戏中呈现特定元素所需的所有数据的对象。例如,您有一个用
位置
速度
和图像(
纹理
)定义的字符。然后,该对象可以有一个
draw
方法和一个
move
方法。
draw
方法将使用
位置
转换矩阵,生成或重用一些顶点数据,绑定适当的
纹理
并简单地绘制自身。在这种情况下,
移动
将仅使用
速度
来更改
位置
。随着您的深入,通常会添加更多的组件,情况可能会变得复杂。但想象一下,只有我在上面写的东西,你才能创造3个形象:人物、敌人、子弹;然后使用这些图像随时创建所需的任意多个对象,随意移动它们,创建碰撞检测(使用这些数据非常简单),您就有了一个简单的游戏,只需添加一些技巧就可以非常快速地变得非常高级。

谢谢,这是一个完美的答案!我会像你解释的那样尝试,谢谢你的时间:D