私が作成していたアクションゲームでOpenGLを習得しようとすると、数年前に同じ問題が発生しました。しかし、私がドキュメントやチュートリアルを深く掘り下げていくうちに、私はそれが思った以上に複雑であると結論づけました。ここで私が学んだ情報の一部さ:Xcodeの上のOpenGL ES、およびOpenGL ES
OpenGLは同じではありませんであるAppleは、構文の一部を変更したので、Android上でも異なっています。
PC上のOpenGLのチュートリアルでは、より詳細であり、多くのサンプルプロジェクトを見つけることができますので、私は、代替としてWindowsを使用してプラットフォームを変更しました。 Xcodeを使用する場合と比較して、基本ははるかに簡単に学習できます。 のような別のプラットフォームでのシェーダのプログラミングとシェーダのプログラミングの基本的な概念を学び、さらに経験を積んだ後にXcodeに戻ってくることをお勧めします。
Xcodeの使用を強くお勧めする場合は、エラーなしで正常にコンパイルできるサンプルコードを提供できます。次のコードはOpenGL ES1で書かれています。あなたがStoryboards
を使用している場合は、上の表示を変更することを忘れない
#import "ViewController.h"
typedef struct {
GLKVector3 PositionCoordinates;
}VertexData;
#define SQUARE_SIZE 120.0f
VertexData Vertices[] = {
{0.0f, 0.0f, 0.0f},
{SQUARE_SIZE, 0.0f, 0.0f},
{0.0f, SQUARE_SIZE, 0.0f},
{0.0f, SQUARE_SIZE, 0.0f},
{SQUARE_SIZE, 0.0f, 0.0f},
{SQUARE_SIZE, SQUARE_SIZE, 0.0f}
};
@interface ViewController()
@property (nonatomic, strong) EAGLContext *Context;
@property (nonatomic, strong) GLKBaseEffect *BaseEffect;
@end
@implementation ViewController {
GLuint _VertexBufferID;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.Context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
GLKView *View = (GLKView *)self.view;
View.context = self.Context;
[EAGLContext setCurrentContext:self.Context];
self.BaseEffect = [[GLKBaseEffect alloc] init];
self.BaseEffect.useConstantColor = YES;
self.BaseEffect.constantColor = GLKVector4Make(255/255.0f, 255/255.0f, 255/255.0f, 1.0f);
self.BaseEffect.transform.projectionMatrix = GLKMatrix4MakeOrtho(0, self.view.bounds.size.width, 0, self.view.bounds.size.height, 0, 100);
glClearColor(0/255.0f, 0/255.0f, 0/255.0f, 1.0f);
glGenBuffers(1, &_VertexBufferID);
glBindBuffer(GL_ARRAY_BUFFER, _VertexBufferID);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vertices), Vertices, GL_STATIC_DRAW);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(VertexData), NULL);
}
#pragma mark - GLKView delegate methods
-(void)glkView:(GLKView *)view drawInRect:(CGRect)rect {
glClear(GL_COLOR_BUFFER_BIT);
[self.BaseEffect prepareToDraw];
glDrawArrays(GL_TRIANGLES, 0, 6);
}
-(void)Update {
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
:ちょうど新しいSingle View Application
を作成し、次のコードを貼り付けます:
ViewController.h:
#import <UIKit/UIKit.h>
#import <GLKit/GLKit.h>
@interface ViewController : GLKViewController
@end
ViewController.mをViewControllerをGLKView
クラスに追加します(写真のように)。
コンパイルし、その後、BOOM!ジューシーな白い広場は熟しており、編集する準備ができています!
私は涙に私はこのコードで成功した最初の時間をバーストと思います。私はYoutubeのチュートリアルから学んだコードから修正しました。もし私が再び彼に会うと、その男に感謝しなければならない。これがあなたを助けてくれることを願っています:)
P.S.私は、2つの3Dキューブがお互いに回転している「OpenGL ES3 Template Project」のサンプルコードのコピーを持っていますが、それはずっと複雑です。
これはかなり広いです。問題のある具体的な例を示す必要があります。 – Carcigenicate
その性質上、広い質問です。コメントのためにコメントのように思えます。役に立たないです – James
あまりにも広い質問はofftopicですので、いいえ。あなたの質問は、絞り込んでおかないと閉鎖される可能性があります。 「どのように私はこのトピックにアプローチするのですか?」という質問は、ほとんどすべてが意見に基づいているため、サイトには適切ではありません。あなたがスタートして何か具体的な問題を抱えていたら、それはオントロジであろう。 – Carcigenicate