こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

GLSL varying変数の使い方

頂点シェーダで
======================
varying vec4 v;
void main(){


v = vec4(1.0,2.0,3.0,4.0);
}
========================
としたとき、
フラグメントシェーダで、
========================
varying vec4 v;
void main(){
vec4 v1 = v;



}
========================
とすれば、v1の中身はそのまま(1.0,2.0,3.0,4.0)
になっているってことでしょうか?
補間がどうのこうのと聞いた気がするのですが、忘れてしまいました。
教えてください。

投稿日時 - 2007-08-26 16:23:02

QNo.3288151

0-o

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

たしかに以下のURLの説明を読むと、vertex shader で計算した値を元に補間した値を fragment shader が読むみたいに言ってますね^^

ということは、サンプルを作って、値を確認して、値が変わっていれば、「補間してる」のが正しいのではないですか?^^

http://www.lighthouse3d.com/opengl/glsl/index.php?varying

「A varying variable must be written on a vertex shader, where we compute the value of the variable for each vertex. In the fragment shader the variable, whose value results from an interpolation of the vertex values computed previously, can only be read.」

投稿日時 - 2007-08-27 18:39:21

補足

アドバイスありがとうございます。
参考にさせていただきます。

投稿日時 - 2007-08-27 20:46:11

ANo.2

http://chihara.naist.jp/people/STAFF/imura/computer/OpenGL/glsl_question/disp_content

ここに、「vertex shader で gl_TexCoord[0] に値を出力し、 fragment shader で gl_TexCoord[0] を一度も参照しないと、他の varying 変数の参照時に、なぜか gl_TexCoord[0] の値が使用される。…」という記述がありますね。バグじゃないかと言ってますけど^^

投稿日時 - 2007-08-27 18:09:02

補足

まったく知りませんでした。新しいことを教えていただき、ありがとうございます。

投稿日時 - 2007-08-27 20:51:32

ANo.1

http://www.arakin.dyndns.org/glsl_qualifier.php

に書いてあるとおり理解すればそのままのようですが^^

そのままわたっているか、わたっていないかは、プログラムの中でチェックできるので、「常にそのままわたるのか?」という意味ですよね?

投稿日時 - 2007-08-27 18:01:17

補足

アドバイスありがとうございます。
その通りでございます。いろいろ試してみたのですが、varying float型、varying vec2~4型、などを送ってはみたものの、2~3個の値しか渡りませんでした。もともと質問していた内容と行き違ってしまうため、また新しく質問させていただきます。

投稿日時 - 2007-08-27 20:53:51