iOS 용 OpenGL/GLKit에 대해 this tutorial을 따르고 있지만 Swift에서 구현하려고합니다.이 OpenGL 포인터 수학을 Swift로 변환하려면 어떻게해야합니까?
struct TexturedVertex {
let geometryVertex: CGPoint
let textureVertex: CGPoint
}
struct TexturedQuad {
let bottomLeft: TexturedVertex
let bottomRight: TexturedVertex
let topLeft: TexturedVertex
let topRight: TexturedVertex
}
그것은 상당히 간단한 구조입니다 만 나는 방법을 모른다 :
- (void)render {
// 1
self.effect.texture2d0.name = self.textureInfo.name;
self.effect.texture2d0.enabled = YES;
// 2
[self.effect prepareToDraw];
// 3
glEnableVertexAttribArray(GLKVertexAttribPosition);
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
//---------------- This is where things break down...
long offset = (long)&_quad;
glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, sizeof(TexturedVertex), (void *) (offset + offsetof(TexturedVertex, geometryVertex)));
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(TexturedVertex), (void *) (offset + offsetof(TexturedVertex, textureVertex)));
// 5
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
}
@end
나는 스위프트 구조체 이런을의 속성 self.quad
이 :이 부분에 얻을 때까지 잘거야 마지막 인수 인 glVertexAttribPointer
으로 전달합니다. 어떤 도움이 될 것입니다 항성!
우수! 또한 Swift에 'union'이 없기 때문에 GLKit의 대부분이 Swift에서 파기되는 튜토리얼에서 다음 문제를 추가 할 것입니다. 이 코드는 문제를 해결합니다. https://github.com/programmingthomas/OpenGL.swift – jbrennan
또한, CGPoint는 부동 소수점이 너무 크기 때문에 작동하지 않습니다. 32 비트'GL_FLOAT'을 사용해야합니다. – jbrennan