ios – 在Swift中调用glDrawElements而不是在Objective-C中调用OpenGL EXC_BAD_ACCESS

我正在研究Ray Wenderlich的 OpenGL for iOS教程,试图将他的代码从Objective-C转换为Swift.

我是OpenGL和Swift的新手,并且相信我的问题与我如何翻译Objective-C有关.原因如下:

在我的swift文件中设置包含OpenGL内容的视图,在最后的逻辑步骤(调用glDrawElements)上,应用程序将因EXC_BAD_ACCESS警报而崩溃.但是,如果我将此部分代码移动到Objective-C文件,则应用程序将按预期工作.

Swift版本的代码:

var positionDataOffset: Int = 0
glVertexAttribPointer(self.positionSlot,3 as GLint,GL_FLOAT.asUnsigned(),GLboolean.convertFromIntegerLiteral(UInt8(GL_FALSE)),VertexDataSource.sizeOfVertex(),&positionDataOffset)

var colorDataOffset = (sizeof(Float) * 3) as AnyObject
glVertexAttribPointer(self.positionSlot,4 as GLint,VertexDataSource.vertexBufferOffset())

var vertexOffset: Int = 0
glDrawElements(GL_TRIANGLES.asUnsigned(),VertexDataSource.vertexCount(),GL_UNSIGNED_BYTE.asUnsigned(),&vertexOffset)

这是Objective-C版本:

glVertexAttribPointer(position,3,GL_FLOAT,GL_FALSE,sizeof(Vertex),0);
glVertexAttribPointer(color,4,(GLvoid*) (sizeof(float) * 3));

glDrawElements(GL_TRIANGLES,sizeof(Indices)/sizeof(Indices[0]),GL_UNSIGNED_BYTE,0);

正如你所看到的,Swift更加冗长……我和其他人一样都是新手.

以上是来客网为你收集整理的ios – 在Swift中调用glDrawElements而不是在Objective-C中调用OpenGL EXC_BAD_ACCESS全部内容,希望文章能够帮你解决ios – 在Swift中调用glDrawElements而不是在Objective-C中调用OpenGL EXC_BAD_ACCESS所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。