OpenGL 2.0 専用スレat TECH
OpenGL 2.0 専用スレ - 暇つぶし2ch550:デフォルトの名無しさん
07/02/23 15:11:50
GPUベンダがそれぞれGLSLコンパイラを書いてるからグラボを変えたらエラー吐くのはよくあること

551:デフォルトの名無しさん
07/02/23 15:21:32
補足するとNVのコンパイラがGLSLの仕様より融通が利いてるだけで別にATIが悪いわけじゃないよ

552:デフォルトの名無しさん
07/02/23 15:52:57
m3 = mat3( m4 ); ×
こうだ
m3 = mat3( m4[0].xyz, m4[1].xyz, m4[2].xyz ); ○

URLリンク(ati.amd.com)
には、
m3 = mat3( m4 );
ができると書いてあるけが、古い資料だから信用するな。

553:デフォルトの名無しさん
07/02/23 16:03:59
>>551
NVのコンパイラなら float3 と書いてもエラー無く動くのは、笑った

554:デフォルトの名無しさん
07/02/23 19:58:57
頼むからコンパイリンガーは
「自分がどういう最適化をしたのか」
というのを分かりやすく出力して欲しい。

何もエラー出さないから、
今後の参考にならない。

555:デフォルトの名無しさん
07/02/25 09:27:38
コンパイリンガー?

556:デフォルトの名無しさん
07/02/28 10:21:25
mat2x3 とか使えないけどなぜだろう。
わかる人いる?

557:デフォルトの名無しさん
07/02/28 13:52:15
>>556

それは、OpenGL 2.1 なんだけど、お前さんのグラフィックボードは、OpenGL2.1に対応してるのか?

558:デフォルトの名無しさん
07/03/03 19:37:53
>>556
そもそもmat2x3みたいな行列ってどういう時に便利なの?

559:デフォルトの名無しさん
07/03/06 17:18:47

URLリンク(www.nag-j.co.jp)

Fortran BuilderのFortran 90/95ソースコードから、GLUTを使ったOpenGLのプログラミングを可能にします
URLリンク(www.nag-j.co.jp)

560:デフォルトの名無しさん
07/03/07 00:17:28
OpenGLでビルボード処理したいんだけどプログラムはこんな感じ、

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

glEnable(GL_ALPHA_TEST);
glEnable(GL_BLEND);


glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, po->data);
//glTexImage2D(GL_TEXTURE_2D, 0, 4, nSizeX, nSizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData);


glEnable(GL_TEXTURE_2D);

glBegin(GL_POLYGON);
glTexCoord2d(0.0, 0.0);
glVertex3d(-0.5, 0.0, 3.0);
glTexCoord2d(0.0, 1.0);
glVertex3d(-0.5, 0.5, 3.0);
glTexCoord2d(1.0, 1.0);
glVertex3d(0.0, 0.5, 3.0);
glTexCoord2d(1.0, 0.0);
glVertex3d(0.0, 0.0, 3.0);
glEnd();

glDisable(GL_TEXTURE_2D);
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
これじゃだめなんだよね。
イメージも消えちゃう。イメージの背景は透明にしてイメージのみ残したいんだけど。

561:デフォルトの名無しさん
07/03/07 00:31:31
2.0スレ向きの話題ではないな。
glTexEnvの仕様をググってinternalFormatとGL_TEXTURE_ENV_MODEの関係を
よく調べてから他のOpenGLスレへどうぞ。

562:デフォルトの名無しさん
07/03/07 13:14:01
>560
sage の使い方も覚えてね。
glTexImage2D 関数で RGB 設定でテクスチャデータを送ってるから、
テクスチャのアルファは、1.0 その設定では、
glEnable( GL_ALPHA_TEST );
の意味がない。
GL_ALPHA_TEST は、glAlphaFunc関数で、描画しないアルファ値を
設定できるが、ポリゴン全体が同じ値のアルファ値では意味がない。
GL_BLEND は、glBlendFunc関数で背景と色を重ねる設定ができる
ので、目的にあわせて設定を変える必要がある。
glTexEnvの設定は、ポリゴンとテクスチャの色を重ねる設定で、
そのままでも良い。

一番の問題は、テクスチャデータにアルファ値が無いことだよ。(^^;

次は、OpenGLスレ Part10 へ質問してください。


563:デフォルトの名無しさん
07/03/08 04:30:11
>>560
GL2.0 でやろうとしているなら、TexEnvが FragmentShader なのは当然として、

AlphaTest の機能は FragmentShader 内で discard してもできるし、
もちろん AlphaTest を使ってもできる。
OpenGL-ES 2.0 だと AlphaTest 無いから、前者で実現するしかないけど。

564:デフォルトの名無しさん
07/03/14 23:40:19
OpenMAXって最強じゃね?

565:デフォルトの名無しさん
07/03/14 23:45:59
使える実装があればいいものだと思う。
それはOpenGL界隈全体に言えるけど。

てか誰かオープンソースでEGLの実装してくれ。

566:デフォルトの名無しさん
07/03/25 04:25:39
ARB_fragment_programって何も明示しないと最低でも24bit浮動小数点精度を要求される
これって標準で、D3DでいうところのPixelShader2.0ができるということでわ?????



D3DだとPS2.0からはFixedPoint精度シェーダを使用できないが
OpenGLだと明示すればhalfもFixedも使用できる点がゴイスー

567:デフォルトの名無しさん
07/05/30 20:25:42
オラッ!
よしはら!

568:デフォルトの名無しさん
07/06/09 17:38:36
マルチスレッドOpenGLってアップルも実装しているらしいけど実際に速いの?

569:デフォルトの名無しさん
07/08/06 17:50:41
うん

570:デフォルトの名無しさん
07/08/08 23:26:08
いやー実際参った

Fixed point を


修正された点


と直訳されたときは!!!!!

だから直訳組は嫌いなんだ!!!!

571:デフォルトの名無しさん
07/08/08 23:39:52
直訳っつぅかなんつーか・・・
そのひとは固定小数点というものを知らないんだろうね。

Java のリファレンスなんかにもひどい訳語があるよ
URLリンク(java.sun.com)

>計測を使用して音を出すには

意味わかんね

スレ違いすまそ

572:デフォルトの名無しさん
07/08/09 00:03:24
fixを修正って意味で使ってんのはコンピュータ分野の一部分だけなんだよね



573:デフォルトの名無しさん
07/08/09 00:20:52
>>572
手元の英英辞典では1番目の語義に
mend or correct something: to repair, mend, or correct something
って出てきたんですけど・・・

574:デフォルトの名無しさん
07/08/09 00:32:14
>>573
572が言いたかったのは、「コンピュータ分野の一部分」じゃなくて
「コンピュータ分野では一部分」って意味なんじゃなかろうか

でも個人的な感覚では、「修正」の意味の方が頻度高い気もするけど

ていうか fixed point くらい(この分野の)常識として訳して欲しいよね
floating point は一体どう訳したんだろう?


575:デフォルトの名無しさん
07/08/09 00:36:52
きっと 「浮いている点」

576:デフォルトの名無しさん
07/08/09 00:37:07
揺れ動く点とかな

577:デフォルトの名無しさん
07/08/09 17:09:31
> Fixed point を
> 修正された点
ワラタ
そんなの、海外サイトをふだんから見ない俺でもわかるのにw


578:デフォルトの名無しさん
07/08/10 23:29:32

本田大地

579:デフォルトの名無しさん
07/08/15 10:27:58
OpenGL 3.0

580:876
07/08/15 11:40:16
ちゃんとリンク張ってくれよ…

OpenGL公式
URLリンク(www.opengl.org)
Topic: OpenGL 3 announced
URLリンク(www.opengl.org)

581:デフォルトの名無しさん
07/09/19 06:09:37
とりあえず、救済AGEEE


582:デフォルトの名無しさん
07/10/21 10:42:24
RapidMind やってみた、
GPGPUやるんだったら
Cg GLSLよりかなり組みやすいけど
速度的にどうなのかはまだ分からん

やってる人いる?

583:デフォルトの名無しさん
07/10/21 17:31:06
隔離スレで何言ってんだ

584:デフォルトの名無しさん
07/10/22 10:18:42
え、隔離スレなの?
じゃあ、隔離じゃないのは?

585:デフォルトの名無しさん
07/10/22 20:42:52
ここ。

586:デフォルトの名無しさん
07/10/24 01:04:22
当方Cgでシェーダーを組んでいるのですが、まだ手をつけたばかりで
シェーダーの初歩的なことを伺いたくて…他スレがあまりに過疎っているので
こちらで質問させてください。答えて頂けたら本当に助かります。

TEXCOORDについてなのですが
テクスチャ座標を指す、というのはわかったのですが
テクスチャ0や2などの番号がついたときにどこを指すのかわからなくて

float4 uv0 : TEXCOORD0;
float4 uv1 : TEXCOORD1;
float4 uv2 : TEXCOORD2

uniform sampler3D data // volume
uniform sampler2D back_buffer, // backface
uniform sampler1D TransferFunction, // transferfunc

この場合uv0~uv2はどのsamplerを参照するのでしょうか?
Cgチュートリアルを見ていて、明示的にどれとどれが対応するのか、などが描いていなくて…

よろしくお願いします。

587:デフォルトの名無しさん
07/10/24 01:19:24
どれとどれを対応させてもいいし、テクスチャなんか参照せずに他の用途に使ってもいい
組み合わせは自由
すべては作るシェーダ次第

588:デフォルトの名無しさん
07/10/24 01:22:43
すみません、もう少しわかりやすくお願いします…
対応させてもいい、とありますがどのように対応させるのでしょうか


589:デフォルトの名無しさん
07/10/24 01:31:56
たとえば上記のように宣言して

float2 texc = ((uv2.xy / uv2.w) + 1) / 2;
とした場合、このtexcに何が入っているのかわからなくなってしまって。

言い忘れていましたがこれはフラグメントシェーダーで
vertexシェーダーの方では
float4 position : POSITION;
float4 color : COLOR;
float4 texCoord : TEXCOORD0;
をアウトプットしています。

590:デフォルトの名無しさん
07/10/24 01:47:49
それは単に
((uv2.xy / uv2.w) + 1) / 2
の計算結果が入ってるだけで、どのテクスチャも読んでない

Cgあんまり詳しくないけどサンプル眺めてみた限り、テクスチャを読み込んでる部分では tex2D とかの関数を呼んでると思う

591:デフォルトの名無しさん
07/10/24 02:11:07
元にしたソースを見ていましたら
vertexシェーダー から fragmentシェーダーへ値を>>589の値を送っているというのがわかりました。
float2 texc = ((uv2.xy / uv2.w) + 1) / 2; には vertexから送られてきたuv2の2Dテクスチャ座標が入っていました。

確認なのですが、vertexで抜けてきたものをフラグメントでは扱う、ということですよね。
なんとかまとまってきました。

ただ、それでもvertexシェーダーで、uniformもしていないのにtexcoord0とかが呼ばれたときに
それが何を指しているのかがわからない…

すみません…混乱しすぎて。睡魔も着てしまってわけがわからなくなっています。

セマンテックが何を表しているのか、図で説明してくれてるものがあればいいのですが。
OSITIONもCOLORも、画面の何を指しているのかわからないままサンプルいじくってるので…

592:デフォルトの名無しさん
07/10/24 11:22:07
CgUsersManualちゃんと読めば書いてある
プロファイルにもよるが、OpenGLならarbvp1/arbfp1かvp40/fp40辺りだろうから
Appendix B Language Profilesのarbvp1とarbfp1のBindingsの項を読んでみ

593:デフォルトの名無しさん
07/10/27 03:43:29
openglの疑問はwww.opengl.orgに行ってspecification等をちゃんと読めばほとんど解決するだろう。
まずはレンダリングパイプラインを理解することが大切だと思うよ。


594:健介
07/12/25 00:24:22
掃除機セマンテック

595:デフォルトの名無しさん
08/01/26 04:19:35
cg のループ回数(もしくは行数)についてなのですが。
fragment shader (CG_PROFILE_ARBFP1): GeForce7900GS で

void main(out float4 color : COLOR){
float i;
float4 totalCol = 0;

for(i = 0; i < 200; i++){
totalCol += 0.001;
}
color = totalCol;
}

だとちゃんと動くのですが、ループの回数を200から300に増やすと、
CG_COMPILER_ERROR
になるのです。なにか制限とかってあるのでしょうか?

596:デフォルトの名無しさん
08/01/26 04:21:29
タブが消えてしまった orz

void main(out float4 color : COLOR){
float i;
float4 totalCol = 0;

for(i = 0; i < 200; i++){
totalCol += 0.001;
}
color = totalCol;
}

こうです。

597:デフォルトの名無しさん
08/01/26 04:23:54
あれ? スペースも消えた。
Live2ch で書き込んでるせいですかね。 ごめんなさい。

598:デフォルトの名無しさん
08/01/26 08:50:12
いや,重複した半角のスペースは消される

599:デフォルトの名無しさん
08/01/26 09:11:08
ARBFP1というかARBFragmentProgramは動的ループをサポートしてないから
コンパイル時にループを全部展開されて命令数が足りなくなる

よって動的ループをサポートしてる他のプロファイルを使いましょう

600:595
08/01/26 15:54:22
ありがとうございます。
やっぱり制限数があるのですね。
他のプロファイルを試してみます。

601:デフォルトの名無しさん
08/01/26 16:01:28
ていうかこのスレは隔離スレなので質問は本スレ推奨

602:デフォルトの名無しさん
08/01/26 18:22:17
nvidiaのfragment_programっておかしくね??

これだと、なんか固定機能しか使えないように見えるが
実際PS2.0できるじゃん。
fragment_program2だとPS3.0だし


ここは全員でおかしいと主張すべきだ。

603:デフォルトの名無しさん
08/01/26 18:35:39
何がおかしいんだか分からんが、それならば
NV_geometry_program4とかNV_fragment_program4とかNV_vertex_program4を
使えばSM4.0相当になるうえにWindowsXPでも動いてしまう
この方がおかしいと思わないか?

604:デフォルトの名無しさん
08/01/26 18:44:59
もっと分かりやすくすべきだ。

固定機能しか使えないのならば、fragment_program_kotei_fanction

とか、すべきだ。

PS2.0なら、fragment_program2
PS3.0なら、fragment_program3

とわかりやすくすべきなのだ。

だから、ARB_fragment_programがPS1.1までとかいう、変な大間違いが出てくるのだ。

605:デフォルトの名無しさん
08/01/26 19:34:53
PSやらSMはDirect3Dの基準だぞ

606:595
08/01/26 21:12:47
Cg 2.0 をインストールし(1.1だった)、CG_PROFILE_FP40 プロファイルを使用したら
動的ループができるようになりました。
ちなみに、CG_PROFILE_FP30では、動的ループは無理でした。
ただ、別の問題が出てきました。

void main(uniform float size, out float4 color : COLOR){
float i;
float4 totalCol = 0;

for(i = 0; i < size; i++){
totalCol += 1;
}

color = totalCol / size;
}

だと、sizeをいくつにしても、色が白になるはずなのですが、
size 250以上になるとだんだん色が薄くなっていきます。ループの中が
250までしか展開できてないようです。

607:595
08/01/26 21:18:47
続き
で、以下のようにループ部分を分割し、試しにsize=400にして実行したら、

void main(uniform float size, out float4 color : COLOR){
float i;
float4 totalCol = 0;

for(i = 0; i < size - 200; i++){
totalCol += 1;
}

for(i = 200; i < size; i++){
totalCol += 1;
}
color = totalCol / size;
}

見事に白色になりました。
GeForce8800 だったら、こういうでかいループも処理できるんでしょうか?

608:デフォルトの名無しさん
08/01/27 14:22:52
fp40のループは最大256ループまでだそうだ
GeForce8系で使えるgp4fpなら制限無しだな

609:デフォルトの名無しさん
08/01/27 14:36:30
正直MAXまでの何かってのはやってはいけないことだな

例えば命令スロットが512なら、
512を目一杯使わねばならない状態になるのはいかんこと。


610:デフォルトの名無しさん
08/01/27 16:20:13
リアルタイムレンダリングみたいな用途じゃ無いならいいんじゃない

むしろGPGPUやオフラインレンダリングとかなら出来るだけ詰め込んで
GPUに処理を肩代わりさせたいんじゃないのかな

611:595
08/01/27 20:05:20
256まででしたか。
とりあえず分割ループでごまかすことにしました。
8800欲しい・・・
ちなみに、GPGPUなプログラムです。

612:デフォルトの名無しさん
08/02/04 13:04:10
main(out float4 color){
TexColor = tex2D(tex, texcoord);// テクスチャの色
PolColor = Lighting();// ポリゴンの色

color = TexColor * PolColor;
}

Cgのフラグメントシェーダの色々省略したコードなのですが、テクスチャをマッピングしないポリゴンがある場合、
colorが変な色になります。ポリゴン毎にテクスチャの存在の可否を指定する変数を渡して
if(texExist)
color = TexColor * PolColor;
else
color = PolColor;
とすれば意図通りの動作はするのですが、このような処理にするしかないのでしょうか?

613:デフォルトの名無しさん
08/02/05 00:55:33
テクスチャ設定してないのにテクスチャ読めと命令してるんだから変な色になるのは当然だろ
テクスチャ無い時はサンプリングしないって分岐はごく自然な処理だと思うが
他にどうなって欲しいてっんだ?

614:デフォルトの名無しさん
08/02/05 01:01:02
>>612
分岐処理が嫌だったらシェーダ2種類作ったらいいんじゃない?

615:デフォルトの名無しさん
08/02/05 07:51:42
適当に1x1の白テクスチャでも読ませればおk

616:デフォルトの名無しさん
08/02/05 17:49:45
>>615
それが一番楽っぽいな。
余分な負荷は気にしない。

617:デフォルトの名無しさん
08/02/05 23:11:26
>シェーダ2種類作ったらいいんじゃない?
2種類をCgランタイムでどう呼び出すのかわからない


618:デフォルトの名無しさん
08/02/06 01:23:24
テクスチャの有り無しでcgBindProgramに渡すプログラムを変えればいいだけだよ

619:612
08/02/06 01:52:25
>>615
>>618
今は
cgGLBindProgram(); sceneGraph->DrawAll(); cgGLBindProgram(NULL);
こんな感じで全部のオブジェクトを一気に描画してるので,
シェーダ2種類作ってポリゴン毎にバインドするシェーダを切り替えるのは
遅くなっちゃうのかなと思って他にいい方法がないか考えてました。
頭で考えてただけで実際遅くなるかとかの検証はしてなかったのでやってみます。

書いてて思ったんですけど同じマテリアル(テクスチャ)を使う
ポリゴンをグルーピングしていればシェーダ切り替える方法は
使いやすそうですね。

どっちのやり方も参考になりました、ありがとうございます。

620:デフォルトの名無しさん
08/02/06 02:11:20
描画時にマテリアルでソートするのは高速化の常套手段だね

621:デフォルトの名無しさん
08/06/24 00:36:30
保守

622:デフォルトの名無しさん
08/07/19 13:22:03
コンパイルすると

Error: 'C:\A\TOOLS\BCC\LIB\GLU32.LIB' contains invalid OMF record, type 0x21 (po
ssibly COFF)

と出ます

IMPLIB glut32.lib glut32.dll

をして、glut32.libを上書きしてるんですがダメです

623:デフォルトの名無しさん
08/07/19 13:38:31
エラーをよく読め・・・ glut32.lib じゃないだろう

624:デフォルトの名無しさん
08/07/19 15:44:55
ありがとうございます。解決しました。

625:デフォルトの名無しさん
08/08/06 19:48:28
URLリンク(www.kumaryu.net)
S3本気だなー
ATIはいつ本気出すんだー

626:デフォルトの名無しさん
08/08/06 22:57:14
Khronos BOFs
* OpenGL 3.0 Specification Overview
* OpenGL hardware and driver plans - AMD, Intel, NVIDIA
* Developer's perspective on OpenGL 3.0
* The new Khronos OpenCL Working Group and how that affects OpenGL
* and more...

AMDもいつまでも黙ってはいないぞ
どちらかと言えば微妙な拡張よりこっちの方が期待したいし
できればIntelもな…

627:デフォルトの名無しさん
08/08/06 23:30:50
AMDはさっさと拡張の仕様を公開しろ。
ドキュメントがない拡張が何個溜まってると思ってるんだ。

628:デフォルトの名無しさん
08/08/12 10:25:36
OpenGL3.0情報

URLリンク(www.opengl.org)
URLリンク(www.khronos.org)


629:デフォルトの名無しさん
08/08/12 11:31:52
opengl.orgのmessage boardでは不満の嵐だな
「散々待たせといて結局これかよ!」みたいな

630:デフォルトの名無しさん
08/08/12 12:40:54
せめて3.0で削除された仕様は書かないでおいてくれると読み易かったんだがな
あとせめてテクスチャ回りを整理してほしかった

631:デフォルトの名無しさん
08/09/20 13:53:54
URLリンク(www.sgi.com)

632:デフォルトの名無しさん
08/09/21 18:43:03
やっとまともなライセンスになったか

633:デフォルトの名無しさん
08/10/24 03:30:59
保守

634:デフォルトの名無しさん
08/10/29 15:59:00
>>83
鹿バネ(´∀`)

635:デフォルトの名無しさん
08/11/30 19:03:58
OpenGLnのmain関数をスレッドで呼び出して使おうと思っているのだが、display()関数のオブジェクトカラーを引数で渡した値で更新したいんだ。
マルチスレッドで値を渡すことはできるのだが、OpenGL側でどうやって、display()関数に値を綿したらいいのかわらかない。

つまり、
プログラム1 --> OpenGLプログラム(スレッドで生成)
  ▼       ▼
 値の更新     色変更
  ▼       ▼
 値の更新     色変更
  …       …
ってことをしたいんだ。

636:デフォルトの名無しさん
08/12/10 22:54:50
Snow Leopardの準備は万端? 「OpenCL 1.0」の仕様が公開[08/12/09]
スレリンク(pcnews板)

637:デフォルトの名無しさん
08/12/21 12:01:23
glRotatef(90,1,0,0);
glutSolidCube(1.0);
このあとに
glTranslatefかglrotatefを適当にいれて
glSolidSphere(1.0,10,10);
より立方体の回転起動に垂直の起動で球が回転するようにするには
どうやればいいですか?

638:デフォルトの名無しさん
08/12/21 12:09:47
まずは日本語で頼む

639:デフォルトの名無しさん
08/12/21 14:05:21
glRotatefとglTranslatefを組み合わせてx軸周りの回転移動をy軸周りの回転に
させることはできますか?

glPopMatrix()とglPushMatrix()を使わないで

640:デフォルトの名無しさん
08/12/22 01:17:00
GLSLで色を出力するとき、というか、OpenGLの質問なんですが、
OpenGLでは各色の値の範囲が0~1ですが、これってGDI上での0~255の範囲に
リニアに一致する訳じゃないのでしょうか?
256*256のコンテキストを作り、全面ぴったりのポリゴンを張って、フラグメントシェーダーから

  gl_FragColor = vec4(gl_TexCoord[0].s, gl_TexCoord[0].s, gl_TexCoord[0].s, gl_TexCoord[0].t);

として色とアルファの増え方を見てみたのですが、どうもジャギっててきれいに0~255の範囲で
増えてるわけではないみたいなのですが…
コンテキストと同じサイズのGL_NEARESTなテクスチャを張った場合はちゃんと256*256の範囲
全体が張られているのでテクスチャ座標がずれてるわけでもないみたいです。

641:デフォルトの名無しさん
08/12/22 01:21:03
あだ、ここGL "2.0"スレだった orz
GLスレの方に行ってきます orz
スレ汚しすみませんでした…

642:デフォルトの名無しさん
08/12/29 03:29:54
DirectX ばっかりで OpenGL なんて一生触ることは無いと思ってたが
Linux絡みでJOGLで開発することになった
調べてみたら、OpenGL も色々面白そうだな

643:デフォルトの名無しさん
08/12/29 04:52:15
名前が違うだけで、実行するハードウェアの中身に対するフォーマットは一緒だからな。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch