我正在为iOS和Android制作游戏.我在很多地方都看到使用索引绘制比绘制三角形数组更有效.
问题是我正在使用有损压缩顶点(如md2的文件格式)并且它只需要单独的索引 - 数组:N*3(xyz)*1(uchar)+ translate(12字节)+ scale( 12个字节).元素:N*3(xyz)*4(uint)+数组/ ~10
似乎数组比索引和压缩元素更好的选择,尽管苹果的OpenGL分析器工具说我应该使用glDrawElements ..
OpenGL实现是否更喜欢索引数组?或者是因为索引数组包含的数据少于常规未压缩数组?
ps我正在使用OpenGL es 2.0,而顶点着色器是解压缩顶点的人.
我正在尝试在背景图像(正投影)上渲染一些带有Frustum投影的网格.无论我做什么,背景图像都会保持在场景之上(隐藏网格物体).
我尝试过一点测试 - 当我用相同的投影矩阵渲染它们时,它们的顺序是正确的 - 背景图像在网格后面.
这些是投影矩阵和Depth-Buffer init:
glEnable(GL_DEPTH_TEST);
glClearDepthf( 1.0f );
glDepthFunc( GL_LEQUAL );
glDepthMask (GL_TRUE);
EGLConfig eglconfig;
EGLint const attrib_list[] = {
EGL_DEPTH_SIZE, 16,
EGL_NONE
};
EGLint numreturned;
CHECK(eglChooseConfig(esContext.eglDisplay, attrib_list, &eglconfig, 1, &numreturned) != EGL_FALSE);
float fieldOfView = 60.0;
float znear = 0.1f;
float zfar = 100000;
float size = (float)(znear * tanf((fieldOfView * M_PI /180.0f) / 2.0f));
m_orthoProjMatrix.loadOrtho(0,
screenWidth,
0,
screenHeight,
znear,
zfar);
m_frustProjMatrix.loadFrustum(-size,
size,
-size / (screenWidth / screenHeight),
size / (screenWidth / screenHeight),
znear,
zfar); …Run Code Online (Sandbox Code Playgroud) opengl-es frustum orthographic projection-matrix opengl-es-2.0
我听说苹果因为条款严厉而丢掉了很多应用程序.我不想对我的项目太过分了,因为我知道以后很难重写它.
现在我开始将它重写为Objective-C(来自c ++),因为我得到了苹果只采用纯粹的Objective-c代码的印象.在网络的某些地方,人们提供c\c ++中的解决方案,用于解决使用objective-c无法解决的问题,这让我有点想到重写.
为了清除问题,有人可以给我一个方向,我在哪里可以找到苹果的iPhone代码条款?