iOSでopenglを試すために、GLKitを使用してビューを作成しています。ビューには、次のロード方法があります。
- (void)viewDidLoad
{
[super viewDidLoad];
self.context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
if (!self.context) {
NSLog(@"Failed to create ES context");
}
GLKView *view = (GLKView *)self.view;
view.context = self.context;
view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
[EAGLContext setCurrentContext:self.context];
self.effect = [[GLKBaseEffect alloc] init];
}
そして、シェイプの描画メソッドには、次のコードがあります。
float vertices[] = {
-1, -1,
1, -1,
0, 1};
glEnableVertexAttribArray(GLKVertexAttribPosition);
glColor4f(0.0, 1.0, 0.0, 1.0);
glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glDrawArrays(GL_TRIANGLES, 0, sizeof(vertices));
glDisableVertexAttribArray(GLKVertexAttribPosition);
このコードは画面の中央に三角形を描画しますが、三角形は白です。線で現在の色を緑に設定しましたglColor4f(0.0, 1.0, 0.0, 1.0)
が、現在の描画色は変わりません。三角形の色を変更するにはどうすればよいですか?
OpenGL 2.0は、シェーダーを使用してジオメトリをラスタライズします。シェーダーに見たい色を伝える必要があります。これを行う方法は、通常、頂点の色属性を必要なものに設定することです。GLKitは使用していませんが、が含まれていることがわかりGLKVertexAttribColor
ます。あなたが望む色にそれを設定してみてください:
GLfloat triangle_colors[] = {
1.0, 1.0, 0.0, 1.0,
0.0, 0.0, 1.0, 1.0,
1.0, 0.0, 0.0, 1.0,
};
glVertexAttribPointer(
GLKVertexAttribColor, // attribute
4, // number of elements per vertex, here (r,g,b,a
GL_FLOAT, // the type of each element
GL_FALSE, // take our values as-is
0, // no extra data between each position
triangle_colors
);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加