При работе с буферами и вершинных атрибутов в OpenGL ES (3.0) и Objective-C Я используюКак использовать функцию glVertexAttribPointer в Swift 3?
glBufferData(GL_ARRAY_BUFFER, sizeof(attributes), attributes, GL_DYNAMIC_DRAW);
загрузить некоторые данные вершин (атрибутов) в буфер, а затем
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, sizeof(VertexCoordinatesStruct)/sizeof(GLfloat), GL_FLOAT, GL_FALSE, sizeof(VertexAttributesStruct), 0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, sizeof(TextureCoordinatesStruct)/sizeof(GLfloat), GL_FLOAT, GL_FALSE, sizeof(VertexAttributesStruct), (void *)sizeof(VertexCoordinatesStruct));
к укажите вершинную память памяти в буфере для вершинного шейдера. Обратите внимание, как я произвел sizeof (OGLVertexCoordinates) на Void * во втором вызове glVertexAttribPointer. Это, если смещение в GL_ARRAY_BUFFER, на котором лежат данные TextureCoordinatesStruct.
И затем я пытаюсь реализовать такой же точный тип кода в Swift 3. Но функция glVertexAttribPointer принимает UnsafeRawPointer как последний параметр, а не void *.
И это проблема, которую я не могу решить: Я не могу создать UnsafeRawPointer с некоторым определенным значением (смещением памяти), как я могу в Objc.
Я изучил все Q/AI мог найти, но все они не подходят для моего случая или просто не работают в Swift 3.
Вот и все! UnsafeRawPointer (bitPattern: i) - именно то, что мне нужно. Спасибо! Я действительно видел этот инициализатор, но не понял, почему параметр называется bitPattern, поэтому я его не замечал :(Будет позже проверять эти ошибки во время выполнения. Я сообщу здесь, если найду/исправить любые проблемы –
Не заметил любые сбои или другие проблемы. –