質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

1599閲覧

OpenGL uniform vec4 変数にソースファイルから値を設定出来ない原因が知りたい

退会済みユーザー

退会済みユーザー

総合スコア0

OpenGL

OpenGLは、プラットフォームから独立した、デスクトップやワークステーション、モバイルサービスで使用可能な映像処理用のAPIです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/10/22 02:06

編集2022/01/12 10:55

提示コードですなぜglUniform4f();関数で頂点シェーダに値を設定しているのにも関わらず画面に色が表示されないのでしょうか?
フラグメントシェーダの//決め打ちコードののようにマジックんナンバーで取りえず記述すると色が表示されます。これは何を間違えたのでしょうか?

//フラグメントシェーダー色設定 コメント部のコード

cpp

1//描画 2void Rectangle::DrawGraph(int x, int y) 3{ 4 5 int xx = (-WIDTH / 2) + (CELL / 2) + x; 6 int yy = (HEIGHT / 2) - (CELL / 2) - y; 7 8 9 setMove(glm::ivec2(xx, yy)); 10 11 glUseProgram(ShaderProgram); 12 13 //描画シェーダー 14 glUniformMatrix3fv(glGetUniformLocation(ShaderProgram, "ViewMatrix"), 1, GL_FALSE, glm::value_ptr(getViewMatrix())); 15 glUniformMatrix3fv(glGetUniformLocation(ShaderProgram, "WorldMatrix"), 1, GL_FALSE, glm::value_ptr(getWorldMatrix())); 16 17 glUniform4f(glGetUniformLocation(ShaderProgram, "fragColor"), 1.0f, 0.0f, 0.0f, 0.5f); //フラグメントシェーダー 色設定 18 19 20 glBindVertexArray(vao); 21 22 glDrawElements(GL_TRIANGLES, sizeof(index), GL_UNSIGNED_INT, NULL); 23}

GLSL

1//頂点シェーダー 2#version 400 3 4layout (location = 0) in vec2 pos; 5 6uniform vec4 fragColor;//色情報 7 8uniform mat3 ViewMatrix; 9uniform mat3 WorldMatrix; 10 11out vec4 out_Color; 12 13void main() 14{ 15 out_Color = fragColor;//色情報をフラグメントに渡す 16 17 18 19 vec3 position = vec3(pos,1.0); 20 gl_Position = vec4(position * WorldMatrix * ViewMatrix ,1.0); 21}

GLSL

1#version 400 2 3out vec4 Color; 4 5in vec4 out_Color; 6 7void main() 8{ 9 Color = out_Color; 10 11// Color = vec4(1.0f, 0.0f, 0.0f, 0.5f);//決め打ちコード 12}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

コードを見た限りでは特におかしな点を見つけられないのですが、例えば頂点シェーダーの方を

glsl

1out_Color = vec4(1.0f, 0.0f, 0.0f, 0.5f);

のように決め打ちの値にしてみたらどうなるかとか、フラグメントシェーダーの方を

glsl

1Color = vec4(out_Color.rg, 1.0f, 0.5f);

などのように一部の色要素を決め打ちにしてしまう等を試してみると原因がつかみやすいのではないかと思います

投稿2020/10/27 11:20

kazatsuyu

総合スコア158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問