Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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
Ios 具有256个以上顶点的OpenGL ES2网格打断_Ios_Objective C_Opengl Es - Fatal编程技术网

Ios 具有256个以上顶点的OpenGL ES2网格打断

Ios 具有256个以上顶点的OpenGL ES2网格打断,ios,objective-c,opengl-es,Ios,Objective C,Opengl Es,我正在尝试在iPhone上使用OpenGL ES2从三角形元素创建网格。在顶点数超过256个之前,该选项工作正常。在这个数字上,三角形无处不在 当我创建一个网格-4x64时,所有的东西都渲染得很好 创建网格-8x64时,缺少上半部分。就好像只有256字节的空间,所以数组的后半部分覆盖了前半部分 这是我用来设置顶点缓冲区的代码: // Grid size NSInteger gridX = 4; NSInteger gridY = 64; _vertexSize = gridX * gridY

我正在尝试在iPhone上使用OpenGL ES2从三角形元素创建网格。在顶点数超过256个之前,该选项工作正常。在这个数字上,三角形无处不在

当我创建一个网格-4x64时,所有的东西都渲染得很好

创建网格-8x64时,缺少上半部分。就好像只有256字节的空间,所以数组的后半部分覆盖了前半部分

这是我用来设置顶点缓冲区的代码:

// Grid size
NSInteger gridX = 4;
NSInteger gridY = 64;

_vertexSize = gridX * gridY * sizeof(BVertex);
_vertexData = (BVertex *) malloc(_vertexSize);


// The number of triangles (t) is: 2 * (gridSize - 1)^2
// The number of points (p) is 3 * t
_indexSize = 2 * 3 * (gridX - 1) * (gridY - 1);
_indexData = (GLubyte *) malloc(_indexSize);

// Code to add data to the arrays. I know this is working and 
// it's long and boilerplate so I'm not including it

GLuint vertexBuffer;
glGenBuffers(1, &vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, _vertexSize, _vertexData, GL_STATIC_DRAW);

GLuint indexBuffer;
glGenBuffers(1, &indexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, _indexSize, _indexData, GL_STATIC_DRAW);
这是要渲染的代码:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, _imageTexture);
glUniform1i(_textureUniform, 0);

// Draw the elements
glDrawElements(GL_TRIANGLES, _indexSize/sizeof(_indexData[0]), GL_UNSIGNED_BYTE, 0);

// Present our render buffer
[self.context presentRenderbuffer:GL_RENDERBUFFER]; 
如有任何见解,将不胜感激

我找到了解决办法

我使用GLubyte类型来存储索引。这种类型最多只能存储256个整数,然后会重置回零

我找到了解决办法

我使用GLubyte类型来存储索引。这种类型最多只能存储256个整数,然后会重置回零

我找到了解决办法

我使用GLubyte类型来存储索引。这种类型最多只能存储256个整数,然后会重置回零

我找到了解决办法

我使用GLubyte类型来存储索引。这种类型最多只能存储256个整数,然后会重置回零