M1Macで行う「RUSTではじめるOpenGL」
2023.02.25
この記事は最終更新日から1年以上が経過しています。
以前購入していた「RUSTではじめるOpenGL」をM1Macで写経してみました。
本書のソースはこちら
環境は以下の通り
-
MacOS 11.6
-
rustc 1.61.0
-
cargo 1.61.0
-
GLSL 1.4
最初は、crateも最新でやっていたのですが、どうもコンパイルエラーが起きたり、APIが異なったりしたので最終的には本書とも合わせる形で以下のバージョンで実装。
[dependencies] sdl2 = "0.32.2" gl = "0.14.0" cgmath = "0.17.0" c_str_macro = "1.0.2" imgui = "0.2.1" imgui-sdl2 = "0.7.0" imgui-opengl-renderer = "0.6.0" image = "0.22.3"
主にシェーダー周りでコンパイルエラーが発生する。
以下の様に意図しない表示にもなる。
シェーダー全体的に以下の様に修正。
バージョンの変更
#version 140↓
#version 330
出力変数を自前で定義
out vec4 FragColor;を追加in vec3 FragPosition; out vec4 FragColor;
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);↓
FragColor = vec4(1.0, 0.0, 0.0, 1.0);
頂点属性の順番を明示的に指定
in vec3 iPosition; in vec3 iNormal; in vec2 iTexCoords;↓
layout(location = 0) in vec3 iPosition; layout(location = 1) in vec3 iNormal; layout(location = 2) in vec2 iTexCoords;
in vec3 iPosition; in vec2 iTexCoords;↓
layout(location = 0) in vec3 iPosition; layout(location = 1) in vec2 iTexCoords;
これらの修正で、MaMacでも最後まで進めることができました。
Texture
Framebuffer Objects
OpenGL、ImGUI、シェーダー周りの勉強にとても良い書籍でしたのでよろしければ。