OpenGLスレ Part17
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2011/11/15(火) 18:45:31.83現在のバージョンは4.1
http://www.opengl.org/
== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glx: XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない
・glut: クロスプラットフォームなツールキット。でもさすがに古くさい
・glew: これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。
・OpenTK C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。
== 必読書 ==
・OpenGLプログラミングガイド 原著第5版 (通称赤本)
・OpenGL(R) Reference Manual (通称青本)
・OpenGL Shading Language (通称だいだい本)
・OpenGL(R) SuperBible: Comprehensive Tutorial and Reference
・OpenGL ES 2.0 プログラミングガイド
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
あると便利。
・ゲームプログラミングのための3Dグラフィックス数学
== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/
NeHe: http://nehe.gamedev.net/
== 前スレ ==
OpenGLスレ Part16
http://hibari.2ch.net/test/read.cgi/tech/1309182662/
0002デフォルトの名無しさん
2011/11/15(火) 18:45:55.78Part16: http://hibari.2ch.net/test/read.cgi/tech/1309182662/
Part15: http://hibari.2ch.net/test/read.cgi/tech/1289992928/
Part14: http://hibari.2ch.net/test/read.cgi/tech/1263901596/
Part13: http://pc12.2ch.net/test/read.cgi/tech/1247349324/
Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/
Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/
Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/
Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/
Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/
Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
== C/C++以外から使うには ==
Rubyから --> ruby-opengl
Pythonから --> PyOpenGL
Javaから --> JOGL
JavaScriptから --> ???
Haskellから --> ???
C#等、.NET系 --> OpenTK
0003デフォルトの名無しさん
2011/11/15(火) 18:46:32.70OpenGL.org wiki:
http://www.opengl.org/wiki/Main_Page
OpenSceneGraph: OpenGL を高度に抽象化し、利便性を高めたラッパー。C++ ライブラリ
http://www.openscenegraph.org/
OpenGL Mathematics (GLM): GLSL 文法ライクの C++ 数学ライブラリ
http://glm.g-truc.net/
== Quick Reference Card ==
OpenGL 4.1 API Quick Reference Card
http://www.khronos.org/files/opengl41-quick-reference-card.pdf
OpenGL 3.2 API Quick Reference Card
http://www.khronos.org/files/opengl-quick-reference-card.pdf
OpenGL ES 2.0 API Quick Reference Card
http://www.khronos.org/opengles/sdk/docs/reference_cards/OpenGL-ES-2_0-Reference-card.pdf
WebGL 1.0 API Quick Reference Card
http://www.khronos.org/files/webgl/webgl-reference-card-1_0.pdf
0004デフォルトの名無しさん
2011/11/15(火) 23:24:15.07乙なんだからね
0005デフォルトの名無しさん
2011/11/16(水) 10:44:28.29== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
NeHe: http://nehe.gamedev.net/
OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/
OpenGL Step By Step: http://ogldev.atspace.co.uk/
OpenGL Samples Pack: http://ogl-samples.g-truc.net/
0006デフォルトの名無しさん
2011/11/16(水) 11:09:44.59== 必読書 ==
-- CG入門 --
OpenGL以前の普遍的なCGの概念。
CG-ARTS協会の3冊は初心者向け。あとの2冊は上級者向け。
・コンピュータグラフィックス (CG-ARTS協会)
・ビジュアル情報処理 (CG-ARTS協会)
・ディジタル映像表現 (CG-ARTS協会)
・ゲーム制作者になるための3Dグラフィックス技術
・ビジュアルコンピューティング 3次元CGによる画像生成
-- 初心者用 --
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
・OpenGL ES 2.0 プログラミングガイド
-- 上級者用 --
・OpenGL Shading Language (橙本)
・Shader Xシリーズ
・GPU Gemsシリーズ
・GPU Proシリーズ
0007デフォルトの名無しさん
2011/11/16(水) 11:10:00.04-- モダンなOpenGL --
シェーダーベースの最新のOpenGLの学習
・OpenGL 4.0 Shading Language Cookbook
・OpenGL SuperBible: Comprehensive Tutorial and Reference
・OpenGL 4.0 グラフィックシステム
-- 数学 --
・ゲームプログラミングのための3Dグラフィックス数学
・実例で学ぶゲーム3D数学
・ゲーム開発のための数学・物理学入門
-- 過去の遺物 --
有名だが古いバージョンのOpenGLをもとに書かれているためすでに時代遅れ
通常は買う必要はない
・OpenGLプログラミングガイド 原著第5版 (赤本)
・OpenGL Reference Manual (青本)
0008デフォルトの名無しさん
2011/11/16(水) 13:00:08.500009デフォルトの名無しさん
2011/11/16(水) 14:38:26.34訳本はOpenGL 2.1だぞ
古い仕様のOpenGLを学ぶのにもわかりやすい本ではないし。
昔はあれしかなかったからあれを薦めていたが
2011年にもなってあれをすすめるのは老害だけ
0010デフォルトの名無しさん
2011/11/16(水) 14:41:57.24シェーダーベースのモダンなOpenGLでもっとも詳しく解りやすく書かれている。
日本語で読めるいい本はないね。
特にシェーダーベースの本が絶望的にない。
というわけで床井先生頼んだ!!
0011デフォルトの名無しさん
2011/11/16(水) 15:37:26.32一理あるとは思うけど、
最新を追うだけが全てじゃないよ
0012デフォルトの名無しさん
2011/11/16(水) 15:46:06.86OpenGLで2Dのゲームを作る場合にもシェーダー使っているんだろうか。
0013デフォルトの名無しさん
2011/11/16(水) 15:51:47.32が、古きを知るために赤本がいいかというと違うと思う。
いずれにせよ赤本は時代遅れ
赤本をすすめる人間は信用できない
0014デフォルトの名無しさん
2011/11/16(水) 15:55:49.320015デフォルトの名無しさん
2011/11/16(水) 17:34:52.914x1対応の赤本が出たら手のひら返すんでしょ?
0016デフォルトの名無しさん
2011/11/16(水) 22:20:33.18使った方が楽だと思うよ
0017デフォルトの名無しさん
2011/11/16(水) 22:39:45.630018デフォルトの名無しさん
2011/11/16(水) 23:30:32.810019デフォルトの名無しさん
2011/11/16(水) 23:31:33.30あとCADとか
0020デフォルトの名無しさん
2011/11/17(木) 23:07:51.760021デフォルトの名無しさん
2011/11/18(金) 00:03:18.190022デフォルトの名無しさん
2011/11/19(土) 16:30:05.750023デフォルトの名無しさん
2011/11/19(土) 18:38:02.15http://hibari.2ch.net/test/read.cgi/tech/1261676778/213
http://hibari.2ch.net/test/read.cgi/tech/1272358443/83
http://hibari.2ch.net/test/read.cgi/tech/1321350331/22
http://hibari.2ch.net/test/read.cgi/tech/1318935200/82
http://hibari.2ch.net/test/read.cgi/tech/1290415962/444
http://hibari.2ch.net/test/read.cgi/tech/1314133332/444
http://hibari.2ch.net/test/read.cgi/tech/1315141054/25
http://hibari.2ch.net/test/read.cgi/tech/1321282584/4
http://hibari.2ch.net/test/read.cgi/tech/1156332916/186
http://hibari.2ch.net/test/read.cgi/tech/1177431417/279
http://hibari.2ch.net/test/read.cgi/tech/1295493964/744
http://hibari.2ch.net/test/read.cgi/tech/1300000513/237
http://hibari.2ch.net/test/read.cgi/tech/1163319215/911
0024デフォルトの名無しさん
2011/11/21(月) 04:44:52.22としているのですが、なかなか上手く出来ません。
http://www.natural-science.or.jp/article/20100818093625.php
作ろうとがんばっているのはまさに↑のようなものです。
出来ればソースコードを全て書き込んでいただければありがたいです。
Microsoft Visual Studio 2008より作成しています。
よろしくおねがいします。
0025デフォルトの名無しさん
2011/11/21(月) 09:12:31.220026デフォルトの名無しさん
2011/11/21(月) 10:18:31.14http://www.sgra.co.jp/estimateform.html
0027デフォルトの名無しさん
2011/11/21(月) 10:35:16.34御食事処もあるのか。いい会社だな
0028デフォルトの名無しさん
2011/11/21(月) 10:55:26.120029デフォルトの名無しさん
2011/11/21(月) 14:26:08.84以前から何度も書き込んでる奴か?
ネタとしても面白くないからいい加減失せてね。
0030デフォルトの名無しさん
2011/11/21(月) 20:24:08.660031デフォルトの名無しさん
2011/11/22(火) 00:44:48.870032デフォルトの名無しさん
2011/11/22(火) 16:41:35.45glBlendFuncと同じようなこと(フラグメントシェーダで描画先のピクセルの色を取って合成みたいな)
をGLSLで行いたいんですけどこれってできますか?
「描画先のピクセルの色を取って」の部分がどうすればできるのか分からないんですが
0033デフォルトの名無しさん
2011/11/22(火) 17:18:16.220034デフォルトの名無しさん
2011/11/22(火) 17:54:06.50描画先のメモリを参照すればいいだけだ。
0035デフォルトの名無しさん
2011/11/22(火) 18:10:07.180036デフォルトの名無しさん
2011/11/22(火) 18:19:31.150037デフォルトの名無しさん
2011/11/22(火) 18:38:47.740038デフォルトの名無しさん
2011/11/22(火) 18:54:38.61まあGLSLで出来るかはわからないが描写先をフレームバッファオブジェクトにしておけば、
そしてテクスチャーバッファーにしておけば、普通にアクセスできるはず
これレンダーバッファーではできないよね?レンダーバッファーは普通のGL関数でアクセスする専用ってことかね
0039デフォルトの名無しさん
2011/11/22(火) 21:17:41.33ttp://www.opengl.org/wiki/Framebuffer_Object
Feedback Loopsって所を見るとダメかな。Mostly
0040デフォルトの名無しさん
2011/11/22(火) 21:42:21.46やりたいことがわからないけど、まあそれがわかれば解決策も容易にわかるはず
0041デフォルトの名無しさん
2011/11/23(水) 01:22:37.66例外的だけど、tegraとか、一部のタイル系モバイルGPUではできるみたいよ。
参考 : NV_shader_framebuffer_fetch
0042デフォルトの名無しさん
2011/11/23(水) 04:57:29.730043デフォルトの名無しさん
2011/11/23(水) 08:50:37.040044デフォルトの名無しさん
2011/11/23(水) 11:08:38.69現在のほとんどのハードウェアでは出来ない。
>>41のような例外は、レンダーバッファ(の一部)がシェーダから近い位置にレイアウトされているから。
0045デフォルトの名無しさん
2011/11/23(水) 11:45:12.47あと、OpenGLのDirectX11相当の機能についてよいリンクなどあったら教えてください。
0046デフォルトの名無しさん
2011/11/23(水) 13:06:25.290047デフォルトの名無しさん
2011/11/23(水) 13:53:18.91ありがとうございます、32ではありません。
EXT_shader_image_load_storeという拡張が欲しい仕様にみえます、OpenGL拡張の仕様書ページみながら頑張ってみます。
しかしNvidia拡張の魔改造ぶりはすごいですね、NV_shader_buffer_store...
0048デフォルトの名無しさん
2011/11/23(水) 14:31:31.680049デフォルトの名無しさん
2011/11/23(水) 15:11:23.55と言うか、大昔はハードウェアごとに全部ソフトウェアとか違ってた訳ですし
0050デフォルトの名無しさん
2011/11/23(水) 18:02:50.640051デフォルトの名無しさん
2011/11/23(水) 18:21:51.420052デフォルトの名無しさん
2011/11/23(水) 20:03:14.51次のプロファイルではARBのシェーダでもポインタとか使えるようになっているといいな。
0053デフォルトの名無しさん
2011/11/24(木) 23:50:04.22わざわざ逆順に掛けて行く必要があるしC++のoperatorとも相性悪いしどうしても解せません
0054デフォルトの名無しさん
2011/11/25(金) 01:00:53.280055デフォルトの名無しさん
2011/11/25(金) 01:01:35.18OpenGLはC++のoperatorの定義なんてしてないし
気に入らないなら適当なラッパー書けばいいだけ
0056デフォルトの名無しさん
2011/11/25(金) 01:24:53.10右手系左手系は関係ないけど転置してるから右から掛けないといけないですよね
C++のoperator、例えば*は左結合なので右から掛けるという規則がすごく気持ち悪いです
確かに数学で出てくるアフィン変換行列と同じ形式ですがプログラミング言語から使うんだから
わざわざ扱いにくい形式を採用しなくても良かったのでは?と疑問に思っています
なんでこんなことに?
0057デフォルトの名無しさん
2011/11/25(金) 01:36:12.62CPUでなにを計算するかなんてOpenGLの知ったこっちゃないよ
0058デフォルトの名無しさん
2011/11/25(金) 02:25:19.54この辺読むと良いと思うよ。
http://steve.hollasch.net/cgindex/math/matrix/column-vec.html
右から掛ける、左から掛けるってのは、計算を数式で記述する仕方の問題だけ。
OpenGLの計算も、ベクトルを行ベクトルと見て行列を左から掛けるのだと解釈する事もできるんだから
そうしたいならそうすればいいんだよ。
005958
2011/11/25(金) 02:30:02.56「行列を左から掛けるのだと」のくだりは、ベクトルに対して行列を左から掛けるって意味じゃなく、
v'=vMに対してさらにローカルな変換を追加するときに新しい行列Nを v'=vNM とMの左に掛けるって意味でした。
0060デフォルトの名無しさん
2011/11/26(土) 07:38:37.40全てglLoadMatrixd*/glMultMatrix*で自前でするということ?
0061デフォルトの名無しさん
2011/11/26(土) 08:23:02.42とりあえず自分でコード書いて確かめてみなよ
0062デフォルトの名無しさん
2011/11/26(土) 09:05:39.27なんかそもそも行列の演算とその使い方が分かってない感じ・・・かな。
もっと具体的に、どういう事をしたい時にどう困ってるのかが分かれば、
解決策も出ると思うんだけど。
とりあえずOpenGL(DirectX)の行列に関する仕様はおおかたの使い方において
妥当なようになっているし、大半の人は(多分)困ってないよ。
0063デフォルトの名無しさん
2011/11/26(土) 14:39:58.94そろそろ OpenGL の行列関数は使わない方がいいような気はする
0064デフォルトの名無しさん
2011/11/26(土) 17:32:55.68GLSL側でcolumn-majorで定義したのが許せない
せっかく0から定義したのになぜバカな仕様を引きずるのか...
0065デフォルトの名無しさん
2011/11/26(土) 18:33:03.16glRotate*等が内部で掛けている行列は列ベクトルへ掛ける用なので
自前で右へ右へ掛けていくために行ベクトル用の行列を作って掛けていったものに対して使うと当然結果おかしくなっちゃいますよね?
うわあめんどい・・・
0066デフォルトの名無しさん
2011/11/26(土) 18:42:06.05自分のソースのglRotateしてる部分を回転行列の転置行列をgMultiMatrixするように置き換えれば使えない理由が分かります確かめてください
0067デフォルトの名無しさん
2011/11/26(土) 19:06:54.41俺は何も困ってないし、何一つ疑問は無いので確かめないよ?w
0068デフォルトの名無しさん
2011/11/26(土) 19:33:56.21右手左手座標系の違いはあるけど、
glTranslatef( x, y, 0 );
って書く替わりに
D3DXMATRIX mat;
D3DXMatrixTranslation( &mat, x, y, 0 );
glMultMatrixf(&mat.m[0][0]);
って書いても動くよね。
逆だ転置だって言うけど、どっちもマトリックスのメモリ配置は同じでxが入るのは*(m+12)
自分で書くなら、自分が使いやすいように実装したらいいんじゃね
0069デフォルトの名無しさん
2011/11/26(土) 22:18:06.69>glRotate*等が内部で掛けている行列は列ベクトルへ掛ける用なので
違います。
>自前で右へ右へ掛けていくために行ベクトル用の行列を作って掛けていったものに対して使うと当然結果おかしくなっちゃいますよね?
おかしいのはあなたの考え方です。
58のURLは読みましたか?
その内容は理解できますか?できませんか?どっち??
0070デフォルトの名無しさん
2011/11/26(土) 22:54:45.46>>58はoperatorの解釈を変えるだの変換をかませだの書いてありますが
言ってることはそれでOKですか?
列中心か行中心かはデータの話でマトリクスの掛け算の定義は変わらないのは当たり前の話で
その上で自前の行中心の行列をかけてる途中で列中心の行列を掛けてしまうglRotate*をそのまま呼び出すことは出来ないよね?めんど。って話をしてるんですけどちゃんと聞いてますか?
0071デフォルトの名無しさん
2011/11/26(土) 23:25:10.25自前の行列をそのままglRotatefを呼べるようなデータの配列順にしとけばめんどくないよって話
0072デフォルトの名無しさん
2011/11/26(土) 23:28:26.54理解できてない人に理解できてるかどうか聞いても意味無かった。
しかしこれどう言えば分かってもらえるのか分からん・・・。
>>>58はoperatorの解釈を変えるだの変換をかませだの書いてありますが
>言ってることはそれでOKですか?
違います。
というかそんなことはどうでもいいです。
えっと確認なんですが、英語は読めますか?
>列中心か行中心かはデータの話でマトリクスの掛け算の定義は変わらないのは当たり前の話で
「データの話で」の意味が不明。
>その上で自前の行中心の行列をかけてる途中で列中心の行列を掛けてしまうglRotate*をそのまま呼び出すことは出来ないよね?めんど。って話をしてるんですけどちゃんと聞いてますか?
それが誤解なのだと、58に貼ったURLに書いてあるんですが…。
0073デフォルトの名無しさん
2011/11/26(土) 23:38:30.10何一つ情報増えてないよね
自分で説明できないなら書かなきゃいいのに。
0074デフォルトの名無しさん
2011/11/26(土) 23:50:45.580075デフォルトの名無しさん
2011/11/26(土) 23:53:28.2258に十分な情報があるのに。
ええとまず、そうだな、最低限のところだけ言うとすると、
glRotate(やその他)は、列優先の行列を掛けるのではないし、列ベクトルに掛けるための行列を作るのでもない。
まずここが分からないと話にならないんだけど・・・
なぜあなたは、OpenGLの行列命令が扱う行列は列優先で、列ベクトルに掛けるものだと思っているのですか?
0076デフォルトの名無しさん
2011/11/27(日) 00:39:25.540077デフォルトの名無しさん
2011/11/27(日) 00:47:34.43v'=Mvという変換の状態に対してglRotate系を発行すると、生成された行列Rが v'=MRv と掛かるコト
(>>53,56は v'=RMv となって欲しいと思っている)なんじゃないかと・・・。
0078デフォルトの名無しさん
2011/11/27(日) 01:37:06.74じゃあglRotateのあとにglMultiMatrixすりゃいいんじゃねえの?
0079デフォルトの名無しさん
2011/11/27(日) 01:41:37.61自作予定のMatrixクラスではx軸回転する場合DirectX(行中心行列)のように
|1 0 0|
|0 cos sin|
|0 -sin cos|
を掛けるのに対して、OpenGL(列中心行列)のglRotateは
|1 0 0|
|0 cos -sin|
|0 sin cos|
を掛けやがるから共存できねー って話です。
0080デフォルトの名無しさん
2011/11/27(日) 02:12:17.59glLoadMatrixする直前に変換行列を転置させるから
glFlush直前ならOKなんですけど、変換途中に使うとなると
行列のLoadとGet時で転置を計2回やる必要があってやっぱり不便だなーと
0081デフォルトの名無しさん
2011/11/27(日) 02:18:50.55o 描画関数呼び出し前
0082デフォルトの名無しさん
2011/11/27(日) 02:18:58.64だからその配列を同じにすれば共存できるでしょって話でしょ
上は
m[0]=1; m[1]= 0; m[2]= 0;
m[3]=0; m[4]= c; m[5]= s;
m[6]=0; m[7]=-s; m[8]= c;
下は
m[0]=1; m[3]= 0; m[6]= 0;
m[1]=0; m[4]= c; m[7]=-s;
m[2]=0; m[5]= s; m[8]= c;
全く一緒
実際DirectXとOpenGLは同じなんだよ。
0083デフォルトの名無しさん
2011/11/27(日) 02:29:22.83そもそもの話だけど行列そのものには行優先も列優先も無くて
2次元の行列を1次元の配列に格納するのが行優先なのか列優先なのかって話なので、
「行中心行列」「列中心行列」みたいな単語を使ってる点を見るに、根本的な勘違いがあるんじゃないかなぁと。
(ちょっと余計な話すると、独自の用語を使う人は、まず大抵その分野について
初歩的な理解ができてないです。きちんと意味を調べて、正しい用語を使いましょう。)
DirectX(のドキュメント)はベクトルを行ベクトルで書いて、ベクトルの変換は行列を右に掛ける形で表すから
X軸回転の行列は>>79の上の行列の形になるけど、DirectXのドキュメントを列ベクトルで書いて
ベクトルの変換は行列をベクトルの左に掛ける形で書き直すと、DirectXのX軸回転の行列も
>>79の下の行列の形になりますよ。>>82も言ってるけど、両者は同じものなんですよ。
0084デフォルトの名無しさん
2011/11/27(日) 02:56:14.58何の話題で盛り上がってるのかようやく理解できたw
0085デフォルトの名無しさん
2011/11/27(日) 02:57:29.17>>82や>>83で「同じ」と言ってるのは、何が「同じ」なのかというと、行列演算の「仕様」。
で、「仕様」と、その「数学的記述」は区別しないといけない。
OpenGL(の主なドキュメント)では仕様を、列ベクトルと左から掛ける行列で記述してるし、
DirectX(の主なドキュメント)では仕様を、行ベクトルと右から掛ける行列で記述してる。
同じ仕様を違う方法で記述してるだけだから、記述自体は相互に変換可能。
OpenGLもDirectXも仕様が同じなんだから、行列演算部分に関しては、同じプログラムがそのまま使える。
ってコトなんですよ。
0086デフォルトの名無しさん
2011/11/27(日) 03:12:20.63行ベクトルに対するアフィン変換行列を行中心行列
列ベクトルに対するアフィン変換行列を列中心行列
というんだと思っていました。
一般的にはどう呼ばれているんでしょう
58のrow major、 column major?
左から掛ければ一緒というのはわかります
ただ右から掛けたい(*1)というのが独自で行列計算する動機なので左から掛ければ一緒はNGなんです
*1
左から掛ける場合Matrixクラスに対してoperator*=を定義できないため
0087デフォルトの名無しさん
2011/11/27(日) 03:23:28.28operator*=を定義できない、ではなく「効率的に定義できない」です
・row majorの場合
Matrix m; // ワールド座標系への変換行列
Matrix x1, x2; // 回転行列等
m *= x1;
m *= x2;
・column majorの場合
Matrix m; // ワールド座標系への変換行列
Matrix x1, x2; // 回転行列等
// M*=x1 は 意味的にM=M*x1なので使えない
m = x1 * m; // operator=が余計に発生
m = x2 * m; // operator=が余計に発生
0088デフォルトの名無しさん
2011/11/27(日) 03:27:09.26Matrix t = x1;
t *= m;
Matrix t2 = x2;
t2 *= t;
m = t2;
0089デフォルトの名無しさん
2011/11/27(日) 03:36:38.97>>79の上のつもりで作った配列は右から掛けてok
できた配列は左版の転置になってると思うだろうけど、
それはそのまま直接OpenGLでもDirectXでも使えるメモリ配置になっている
実際にやってみたらわかると思うよ
>>87-88の言わんとしてることはわかるけど、最近のコンパイラの最適化的にどうなんだろね
グラフィック系のオーバーヘッドはそこには全く現れないと思うけど。でも気持ちはわかる
0090デフォルトの名無しさん
2011/11/27(日) 04:04:55.62ああ、確かに反対の反対で同じになりますね。
安心して寝れます。
0091デフォルトの名無しさん
2011/11/27(日) 07:36:36.42> Matrix m; // ワールド座標系への変換行列
> Matrix x1, x2; // 回転行列等
> // M*=x1 は 意味的にM=M*x1なので使えない
これが嘘だな。operator*=を定義すれば使える
0092デフォルトの名無しさん
2011/11/27(日) 08:25:29.34同じ3Dを扱う物だからな
ただ、DirectXはC++の配列の並びがそのまま使えるように左手座標系になってる
OpenGLの場合はあらゆるプラットフォーム、言語で使うために右手座標系になっている
ただ単にそれだけの事だ
0093デフォルトの名無しさん
2011/11/27(日) 09:27:29.430094デフォルトの名無しさん
2011/11/27(日) 09:56:25.12あなたのコードをメンテする人がかわいそうなのでプログラミングしないでください
0095デフォルトの名無しさん
2011/11/27(日) 11:40:12.59右手系左手系と配列の並びは関係ないよ。
0096デフォルトの名無しさん
2011/11/27(日) 12:11:24.06あるよ
0097デフォルトの名無しさん
2011/11/27(日) 12:47:10.530098デフォルトの名無しさん
2011/11/27(日) 13:02:36.590099デフォルトの名無しさん
2011/11/27(日) 14:07:37.62ちゃう
OGL=数理重視
D3D=感覚・実用重視にしたら左手座標系になった
0100デフォルトの名無しさん
2011/11/27(日) 15:07:49.260101デフォルトの名無しさん
2011/11/27(日) 15:46:52.27おまえ天才じゃね?
0102デフォルトの名無しさん
2011/11/27(日) 16:02:27.53ちがう
なんでもいいからOpenGL と変えたかっただけ。
共通規格が成立するのを邪魔するのが、マイクロソフトの仕事だから。
0103デフォルトの名無しさん
2011/11/27(日) 16:10:13.82しかし左手系が実用性重視だのCの配列と相性がいいだの言ってる人は、
一体何を根拠にしてるんだろ? ワケ分からん。
0104デフォルトの名無しさん
2011/11/27(日) 16:21:09.24x:中指,y:人差し指,z:親指
0105デフォルトの名無しさん
2011/11/27(日) 16:36:09.96何がしたいのか分からん
0106デフォルトの名無しさん
2011/11/27(日) 16:55:40.420107デフォルトの名無しさん
2011/11/27(日) 18:51:36.500108デフォルトの名無しさん
2011/11/27(日) 18:54:03.230109デフォルトの名無しさん
2011/11/27(日) 19:01:14.11DirectXはとにかく速度重視したからC++の配列に合わせて左手座標にしたのだ
転置する必要をなくすためにな
0110デフォルトの名無しさん
2011/11/27(日) 19:05:43.440111デフォルトの名無しさん
2011/11/27(日) 19:09:14.520112デフォルトの名無しさん
2011/11/27(日) 19:13:56.24してないよ
>>68見ればわかるけど、D3DXMATRIXとOpenGLのマトリックスは全く同じ配列なんだよ
0113デフォルトの名無しさん
2011/11/27(日) 19:18:29.09右手系と左手系の話と転置は関係ないから
http://msdn.microsoft.com/ja-jp/library/bb204853%28v=vs.85%29.aspx
>ビュー行列に使用している D3DMATRIX 構造体の _31、_32、_33、および _34 メンバーの符号を反転させます。
変換するには符号を反転させるだけなので
0114デフォルトの名無しさん
2011/11/27(日) 19:21:46.880115デフォルトの名無しさん
2011/11/27(日) 19:24:18.76DirectXの場合はScaleしてからRotateしてTranslateするけど
OpenGLで、その順番でやってみなよ君
0116デフォルトの名無しさん
2011/11/27(日) 19:53:38.92大いにあるぞ
そのページの最後
>>これらの操作を組み合わせると、結果は可換的ではなくなり、行列を乗算する順序が重要となります。
http://msdn.microsoft.com/ja-jp/library/bb206269(v=vs.85).aspx
>>作成した行列の種類にかかわらず、期待どおりのエフェクトを実現するには、左から右へのルールが適用されることを忘れないでください。
0117デフォルトの名無しさん
2011/11/27(日) 19:58:23.06・座標系の左右と、行列の積の結合の左右
・座標系の左右と、行ベクトルか列ベクトルか
・座標系の左右と、乗算すべき行列が概念的なスタックに積まれる順番
これらは本質的に無関係だよな
0118デフォルトの名無しさん
2011/11/27(日) 20:06:52.73算術関数も両方用意されてるじゃん
0119デフォルトの名無しさん
2011/11/27(日) 20:15:09.91自分で行列逆に掛け算してSetTransformしてんじゃないの
MultiplyTransformで掛けこんでいったらDirectXもTrans Rotate Scaleの順だったが
0120デフォルトの名無しさん
2011/11/27(日) 20:20:55.20DirectX5時代の話だけど
0121デフォルトの名無しさん
2011/11/27(日) 20:26:04.68ちゃんとLH使ってんのか?
0122デフォルトの名無しさん
2011/11/27(日) 20:45:35.44glRotate/Translate/Scaleの変換の適用順がD3DXの乗算と逆なあたりが混乱の元凶な気がするんだが
0123デフォルトの名無しさん
2011/11/27(日) 20:54:28.93それこそが右手座標と左手座標の最大の違いなのだよ
行列データそのものは同じでも意図する合成行列を作るには
乗算順序を変えなければならない
http://www.c3.club.kyutech.ac.jp/gamewiki/index.php?3D%BA%C2%C9%B8%CA%D1%B4%B9
ここ見るとわかるかもしれない
0124デフォルトの名無しさん
2011/11/27(日) 21:02:58.86>実はDirectXでは通常の数学とは行列の演算順序を逆にしてるんですよね。
>数学では座標 * 行列の演算順序であるのに、DirectXでは行列 * 座標の
>演算順序で表しています。
>迷惑な話ですが、このようなことで配列を効率よく使うことができ、
>メモリ効率が上がるらしいです。
>ただ、これだと行列の演算順序が変わると結果が変わってしまいます。
>そこで、DirectXでは行列を転置させて結果を変えないようにしています。
>ややっこしい。
0125デフォルトの名無しさん
2011/11/27(日) 21:03:00.58> matWorld = matScale * matRot * matTrans;
v' = v * S * R * T
なんだから
デバイスのポインタ->SetTransform(D3DTS_WORLD,&matWorld);
をMultiplyTransformで書き換えれば、
デバイスのポインタ->SetTransform(D3DTS_WORLD,&matTrans);
デバイスのポインタ->SetTransform(D3DTS_WORLD,&matRot);
デバイスのポインタ->SetTransform(D3DTS_WORLD,&matScale);
になる。OpenGLと一緒。
0126デフォルトの名無しさん
2011/11/27(日) 21:05:26.53下の3行はMultiplyTransformの間違い。
あと掛ける前にD3DXMatrixIdentityで作ったので初期化(glLoadIdentity同等)する必要もある
0127デフォルトの名無しさん
2011/11/27(日) 21:05:55.72>>124
0128デフォルトの名無しさん
2011/11/27(日) 21:08:24.04どれをなんて呼ぶのかよく覚えてねえけどさ
z軸の符号が異なるだけの右手左手系は全然関係ねえでしょ?
D3DXのLHとRHの結果の相違は転置してるだけ? 違うでしょ?
0129デフォルトの名無しさん
2011/11/27(日) 21:21:40.54D3DXMatrixMultiplyでやってみろ
0130デフォルトの名無しさん
2011/11/27(日) 21:27:17.48D3DXMatrixRotation
D3DXMatrixScaling
でやってみたの?
0131デフォルトの名無しさん
2011/11/27(日) 21:37:58.12お前どうしようもないな
v' = S * R * T * v
S,R,T,vの順にかける
0132デフォルトの名無しさん
2011/11/27(日) 22:07:26.37�@座標系の左右と、行列の積の結合の左右
座標系の左右と行列の積の結合の左右は関係ない
�A座標系の左右と、行ベクトルか列ベクトルか
少なくとも数学では右手座標と列ベクトルを用いることが定まっている
そしてOpenGLはそれを採用
DirectXでは左手座標と行ベクトルを採用していた(当初)
理由として
2Dの場合画面左上が原点になる
C++配列と相性が良い
�B座標系の左右と、乗算すべき行列が概念的なスタックに積まれる順番
座標系の左右と、乗算すべき行列が概念的なスタックに積まれる順番は関係ない
0133デフォルトの名無しさん
2011/11/27(日) 22:15:21.94DirectXでは(紙の上ではOpenGLとは逆に) v' = v * M;
つか今回の話の発端はここでしょ
0134デフォルトの名無しさん
2011/11/27(日) 22:36:05.24そう、同じだよ
でもDirectXとOpenGLが同じかと問われたら、それは全然違うと答えるよ
0135デフォルトの名無しさん
2011/11/27(日) 22:41:53.93まさかメモリ効率云々を曲解してるんじゃないよな
0136デフォルトの名無しさん
2011/11/27(日) 22:43:00.64線形代数やり直して来い
0137デフォルトの名無しさん
2011/11/27(日) 22:48:08.63線形代数がどうだろうと、実装はMSがしてんだからしょうがないだろ
http://msdn.microsoft.com/ja-jp/library/bb206269%28v=vs.85%29.aspx
v' = v * M
0138デフォルトの名無しさん
2011/11/27(日) 22:56:42.21o 非同次射影空間のz値のクリッピング範囲が[-1,+1]と[0,+1]
o 補助関数(D3DX、glu)を比較するとむしろOpenGLが右手座標系しか選択肢が無いと言うべき
くらいで後はどうでもいい。
というか後者もどうでもいいか。
0139デフォルトの名無しさん
2011/11/27(日) 22:58:41.620140デフォルトの名無しさん
2011/11/27(日) 23:00:08.090141デフォルトの名無しさん
2011/11/27(日) 23:14:03.720142デフォルトの名無しさん
2011/11/27(日) 23:19:23.56転置行列を作成しなくてもよい=無駄なメモリ使わないしスピードも速い
物凄く効率的じゃないですか?
0143デフォルトの名無しさん
2011/11/27(日) 23:21:58.43右手座標系(OpenGL)でプログラムする場合に、
どこで、何の理由で転置行列を作る必要があるのでしょうか
0144デフォルトの名無しさん
2011/11/27(日) 23:23:01.60何か勘違いしてるようだけど
0145デフォルトの名無しさん
2011/11/27(日) 23:29:09.11D3D10からはずれていないと思った。
0146デフォルトの名無しさん
2011/11/27(日) 23:36:26.580147デフォルトの名無しさん
2011/11/27(日) 23:38:06.08D3D10以降の定数バッファに渡す時もD3DXの行列は転置する必要があるんだけどねw
D3DXの行列レイアウトの何が効率的なの昔からよくわからんのだが
焼き直しのXNA Mathでも同じだしSIMD有利なのけ?
0148デフォルトの名無しさん
2011/11/27(日) 23:45:03.20とにかく速度優先にしたらDirectXの実装になったんだよ
ゲームSDKとしてOpenGLより速く表示する必要があったから
決してOpenGLの逆にしたいとか下らない理由では無かったと思う
0149デフォルトの名無しさん
2011/11/27(日) 23:46:04.0010で変わったのか、知らなかった。そういう仕様を変えちゃうってもすごいな。
0150デフォルトの名無しさん
2011/11/27(日) 23:57:14.57説得力が無い
行列同士の積も、行列とベクトルの積も、
右手座標系と左手座標系で計算量は変わらんと思うが
列同士の積の場合にCPUの積和演算器を活用するなら、
右手でも左手でもどちらかの行列を転置しないといけないし
0151デフォルトの名無しさん
2011/11/27(日) 23:58:16.62すまん、紛らわしいミスをした
> 列同士の積の場合にCPUの積和演算器を活用するなら、
行列同士の積の場合にCPUの積和演算器を活用するなら、
0152デフォルトの名無しさん
2011/11/28(月) 00:13:23.85説得力が無いと言いたいだけか
気になるならよく事情わからない名無しよりMSに問い合わせればいい
0153デフォルトの名無しさん
2011/11/28(月) 01:35:46.83�@ どうして左手系なのか?
>そもそも、左手系と右手系の2つある中でDirectXが左手系を選んだのは
>なぜなのでしょうか?私たちは小さい時から右方向がX軸、上方向がY軸の
>2Dのグラフを見てきました。
>そしてごく普通にアニメや漫画のキャラクタは上方向であるY軸に頭を向けて立ちます。
>さてこの状態で3Dになった時、キャラクタの目線は画面の奥に向かうのが自然でしょう。
>そうすれば、キャラクタの目線方向とプレーヤーの目線方向も合います。
>「前へ進め!」とボタンを押したとき、画面の奥に向かっていくのが自然なのです。
>Z軸が画面の奥へ進む座標系は『左手系』です。
>この自然な成り行きでDirectXなどの3Dゲームは左手系座標を採用しています。
http://www.arakin.dyndns.org/gl_coord.php
>しかし、私がよく使用しているペイントソフトのPictBearやGIMP、そして、あの有名な
>Photoshopも左上が原点です。
>私自身が慣れているのは左上原点であり、これまでアップしたきたサンプルも
>左上原点なのですが、やはり、OpenGLのプログラムをする時は、左下を原点にした方が
>分かりやすいため、左下で統一することにしました。ということで、多くのサンプルを
>一部変更しました。
直感的で自然でわかりやすいからというのが理由だろうな
本当の所はわからんが
0154デフォルトの名無しさん
2011/11/28(月) 01:47:09.77ところで、左手系の方が効率が良いとかまことしやかな噂を聞く割には、
具体的にどの部分でどう効率が良くなるのかっていう説明は目にしないよね。
不思議だよねw
0155デフォルトの名無しさん
2011/11/28(月) 01:55:37.98だとしたら不思議じゃないけど。
0156デフォルトの名無しさん
2011/11/28(月) 02:06:59.570157デフォルトの名無しさん
2011/11/28(月) 20:40:54.650158デフォルトの名無しさん
2011/11/28(月) 21:41:31.81適当にドキュメント読んだだけだけどあれ使う気にならんわ
0159デフォルトの名無しさん
2011/11/28(月) 23:33:36.480160デフォルトの名無しさん
2011/11/29(火) 20:08:17.28glutよりは好きかも
0161デフォルトの名無しさん
2011/11/30(水) 00:11:51.920162デフォルトの名無しさん
2011/11/30(水) 01:58:42.930163デフォルトの名無しさん
2011/12/01(木) 20:34:41.74その場合、マイナスの演算が無くなるから速くなるかもね
0164デフォルトの名無しさん
2011/12/01(木) 20:59:44.340165デフォルトの名無しさん
2011/12/01(木) 21:23:24.340166デフォルトの名無しさん
2011/12/01(木) 21:24:16.91煽る訳じゃないが、普通に思った
0167デフォルトの名無しさん
2011/12/01(木) 21:36:39.41大変興味深い
もう少し具体的な数値を出して、
マイナスの演算が無くなって速くなる事を例示してみてはどうだろう
ネタとか言ってる愚民どもを黙らせることができるかも知れん
0168デフォルトの名無しさん
2011/12/01(木) 21:41:19.54それとも病人が二人いるのかな。
0169デフォルトの名無しさん
2011/12/01(木) 21:46:32.160170デフォルトの名無しさん
2011/12/01(木) 21:51:11.860171デフォルトの名無しさん
2011/12/02(金) 18:21:41.12加算と減算はどうなんだ?
0172デフォルトの名無しさん
2011/12/02(金) 18:55:49.24ただsignedとunsignedの乗算はまず、どちらかにそろえる必要があるから
signedが増えると若干プロセスが増えるのは確か
0173デフォルトの名無しさん
2011/12/02(金) 19:09:48.550174デフォルトの名無しさん
2011/12/02(金) 19:13:12.62Direct3Dのビューボリュームが0〜1の範囲になってるのはそういう事だったのか
0175デフォルトの名無しさん
2011/12/02(金) 19:34:48.97行列式で見てもDirectXの方が速いな。
0176デフォルトの名無しさん
2011/12/02(金) 19:40:31.58行列式じゃなくて行列の式な
意味全然違うから
0177デフォルトの名無しさん
2011/12/02(金) 20:02:25.03contentヘッダがplain/text返すhtmlファイルってどうよ?
0178デフォルトの名無しさん
2011/12/02(金) 22:08:28.97それ以外にもDirectXはZバッファリングを適当にごまかして処理を端折ってるからな。
0179デフォルトの名無しさん
2011/12/02(金) 22:39:02.210180デフォルトの名無しさん
2011/12/02(金) 23:05:41.030181デフォルトの名無しさん
2011/12/02(金) 23:12:54.04そうでないなら、自分の書く処理に集中するべき
私の書いたプログラムの、本当に注力するべき部分、
速度に関しても本当にボトルネックになっている部分、
それが本当に問題になっているなら、そこを洗って正すべき
0182デフォルトの名無しさん
2011/12/02(金) 23:52:30.60言ってることは至極もっともだが、論点がずれてる
0183デフォルトの名無しさん
2011/12/03(土) 00:56:27.371フレームに何万回と射影行列を作るんですかね。
0184デフォルトの名無しさん
2011/12/03(土) 01:05:57.560185デフォルトの名無しさん
2011/12/03(土) 01:27:22.90元々は、DirectXは速度優先のために左手系を採用したとかいう話だったわけでしょ。
それともDirectXは行列一つを速く計算するために左手系を採用したの?
0186デフォルトの名無しさん
2011/12/03(土) 01:59:58.680187デフォルトの名無しさん
2011/12/03(土) 02:21:00.84左手系の方が速いっていう都市伝説とも関係の無い、
射影行列を作るならDirectXの方がちょっとだけ速いよっていうだけの話、って事?
だったらここで出す事に何の意味が・・・まぁいいか。
0188デフォルトの名無しさん
2011/12/03(土) 02:54:30.800189デフォルトの名無しさん
2011/12/03(土) 10:31:57.68z軸が反転してること?
メモリ配置の違いによる行列の合成順のこと?
0190デフォルトの名無しさん
2011/12/03(土) 12:52:55.680191デフォルトの名無しさん
2011/12/03(土) 13:05:51.83数学ベースなら右手も左手も全く同じ計算量なんだから、
あとはメモリ配置とかCPU命令、GPUの仕組みやドライバなどで考えるしかないような・・・
0192デフォルトの名無しさん
2011/12/03(土) 13:06:46.36お前もう黙れよ低脳。 数学的に考えたら速度差の話に答えが出せるっての?
0193デフォルトの名無しさん
2011/12/03(土) 13:51:14.07メモリ配置って言ってるのが恥ずかしくなった?
0194デフォルトの名無しさん
2011/12/03(土) 13:54:23.430195デフォルトの名無しさん
2011/12/03(土) 14:08:57.53相手にしたところで、空っぽなところからは何も引き出せないんだから、熱くならないことをお勧め致しますよ。 >>192
0196デフォルトの名無しさん
2011/12/03(土) 14:22:51.37なんで >>191 には反論しないの?
0197デフォルトの名無しさん
2011/12/03(土) 14:58:24.48何言ってんの?低脳は黙ってろよ
0198デフォルトの名無しさん
2011/12/03(土) 18:01:02.61メモリ効率が良いってのはなんなんだ?
GPUに転送する時に何かあるのか?
0199デフォルトの名無しさん
2011/12/03(土) 18:17:44.850200デフォルトの名無しさん
2011/12/03(土) 18:37:02.660201デフォルトの名無しさん
2011/12/03(土) 18:52:53.65それは確かにそうだが、
行列1つを行優先で配置しようが列優先で配置しようが、
普通のライブラリならどちらも連続的に配置する(ことを要求してくる)
採用している座標系の右手左手に関係なく
そして、行列同士の演算や行列とベクトルの演算において、
ある行や列は計算に不要ということはなく、全ての要素が計算対象となる
だから、行優先でも列優先でも、ましてjpgみたいに斜めに配置しようと、
連続的に配置されているのなら、1回の演算におけるキャッシュ効率は全く同じ
ちなみに、行列1つにつき32ビット浮動小数点16個分で、たった64バイト
ライン長64バイトのキャッシュメモリの場合、
行列の要素をメモリ上にどのように並べようが連続してさえいれば、
1行1列目にアクセスした時点で全要素キャッシュにロードされる
0202デフォルトの名無しさん
2011/12/03(土) 19:51:25.43DirectXのx行目y列目とOpenGLのy行目x列目は共にm[ x * 4 + y ]
0203デフォルトの名無しさん
2011/12/03(土) 22:07:36.250204デフォルトの名無しさん
2011/12/03(土) 22:18:59.020205デフォルトの名無しさん
2011/12/03(土) 22:21:48.170206デフォルトの名無しさん
2011/12/03(土) 23:21:20.71いまだに右手だの左手だのほざいてるアホにでしょう
0207デフォルトの名無しさん
2011/12/04(日) 04:05:23.61頂点データを毎回変更させてから描画するしかないのでしょうか?
0208デフォルトの名無しさん
2011/12/04(日) 04:23:58.39それは例えば 「鋭く尖ったウニみたい五芒星を、まるっこい五角形に」 みたいな話?
頂点更新して再適用( glMapBuffer〜頂点更新〜glUnmapBuffer )するか、
または頂点シェーダで
0209デフォルトの名無しさん
2011/12/04(日) 04:37:03.43そのような描画をしたいんですが、どうやら毎回更新するしかなさそうですね
ありがとうございました
0210デフォルトの名無しさん
2011/12/04(日) 12:06:31.69ちなみに一つだけ老婆心で書いておくと、上の話を踏まえた場合、
>頂点単位でglRotate〜などの変換を
頂点の移動は glScale/glRotate/glTranslate でなく、自分で数学的に計算すること
何故って自分で持ってるデータを書き換えて、再送信だから
0211デフォルトの名無しさん
2011/12/05(月) 20:47:51.510212デフォルトの名無しさん
2011/12/05(月) 22:41:26.190213デフォルトの名無しさん
2011/12/05(月) 22:46:46.190214デフォルトの名無しさん
2011/12/06(火) 00:17:56.360215デフォルトの名無しさん
2011/12/06(火) 01:23:57.38androidに移植できるらしいが情報が全然なくて途方に暮れてる
0216デフォルトの名無しさん
2011/12/06(火) 01:38:36.170217デフォルトの名無しさん
2011/12/06(火) 03:29:32.310218デフォルトの名無しさん
2011/12/06(火) 11:05:49.93好きなの選べ
http://www.opengl.org/resources/libraries/windowtoolkits/
さすがにSDLは時代遅れだろう
GLFWとかの方がいい
0219デフォルトの名無しさん
2011/12/06(火) 12:34:32.430220デフォルトの名無しさん
2011/12/06(火) 12:45:26.920221デフォルトの名無しさん
2011/12/06(火) 21:39:43.130222デフォルトの名無しさん
2011/12/06(火) 22:23:01.91面白そうだけど日本語情報が少ないから大変そうだ……
0223デフォルトの名無しさん
2011/12/06(火) 22:30:46.33GLFW 自体には音楽再生用の仕組みは用意されていないから、
別のライブラリやAPIを使う
play 関数を呼べば stop 関数を呼ぶまで再生し続ける関数があるなら、
それを適当なタイミングで呼べばいい
再生用バッファにwavデータを少しずつ放り込むタイプなら、
毎フレームにおいてバッファの様子を調べて適当にデータを放り込め
0224デフォルトの名無しさん
2011/12/06(火) 22:39:54.84横からだけど、glutしか使ってなかった
glfwまじで使いやすかったわ・・・ガチでありがとう
0225224
2011/12/06(火) 22:40:46.980226デフォルトの名無しさん
2011/12/06(火) 23:23:03.870227デフォルトの名無しさん
2011/12/06(火) 23:43:21.70glutと比べてどこらへんが使いやすい感じなの?
0228デフォルトの名無しさん
2011/12/07(水) 07:26:32.42・ちゃんとメインループから帰ってくる
・tgaのテクスチャなら作るのラクチン
・glutくらいシンプル
0229デフォルトの名無しさん
2011/12/07(水) 16:18:16.170230デフォルトの名無しさん
2011/12/07(水) 17:24:24.210サイズのテクスチャーをFBOにアタッチしてOKだったりエラーだったりするのな
焦らせやがって全くw
0231デフォルトの名無しさん
2011/12/07(水) 19:04:32.62それは GLUT や OpenGL とは何の関係もない
「一定の条件を満たしたかどうか」を判定する方法と、
判定した結果に応じて「状態を遷移させる」方法があればできる
if (一定の動きをしたか?) then 違う動き else 同じ動き
とか
void anim1 () { 同じ動き }
void anim2 () { 違う動き }
--------
a = anim1 // 初期化
if (一定の動きをしたか?) then a = anim2
とか、方法はいろいろある
0232デフォルトの名無しさん
2011/12/07(水) 19:43:08.10本来は if then elseなんだな
0233デフォルトの名無しさん
2011/12/07(水) 19:45:51.25スマン
>>231 は擬似コードのつもりだ
0234デフォルトの名無しさん
2011/12/08(木) 23:59:15.80途中でマルチサンプルのON/OFFを切り替えるのって
もうできなくなってしまったんでしょうか?
0235デフォルトの名無しさん
2011/12/09(金) 21:31:02.670236デフォルトの名無しさん
2011/12/10(土) 00:43:40.490237デフォルトの名無しさん
2011/12/10(土) 03:28:12.940238デフォルトの名無しさん
2011/12/10(土) 16:16:42.39ありがとうございます。また質問させてください。
0239デフォルトの名無しさん
2011/12/10(土) 20:23:17.92うーんなるほど・・・
0240デフォルトの名無しさん
2011/12/10(土) 21:11:47.73質問1)
OpenGL の行列が C=CM なので
原点から10離れた位置でZ軸で45度回転する場合の行列を求めるには
紙の上では
C:カレント行列 R:Z軸で45度回転 T:X軸に10移動 I:単位行列
C=I
C=C * R ローカル座標のZ軸で45度回転
C=C * T ローカル座標のZ軸で45度回転したX軸で10移動
C=((IR)T)=(I(RT))
コーディングでは
C=I
C=C * T or C *= T ローカル座標のX軸で10移動
C=C * R or C *= R X軸で10移動したローカル座標のZ軸で45度回転
C=((IT)R)=(I(TR)) or C= I * T * R
つまり、紙の上では C=IRT コーディングは C=ITR
で、正しいですか?
0241デフォルトの名無しさん
2011/12/10(土) 21:12:29.51OpenGL の行列が C=CM なので
原点から10離れた位置でZ軸で45度回転する場合の行列を求めるには
C:カレント行列 R:Z軸で45度回転 T:X軸に10移動 I:単位行列
紙の上では
C=I
C=T * C 絶対座標系のX軸で10移動
C=R * C 絶対座標系のZ軸で45度回転
C =((RT)I)=(R(TI))
コーディングでは
C=I
C=C * T or C *= T 絶対座標系のX軸で10移動
C=C * R or C *= R X軸で10移動した絶対座標系のZ軸で45度回転
C=((IT)R)=(I(TR)) or C= I * T * R
つまり、紙の上では C=RTI コーディングは C=ITR
で、正しいですか?
紙の上ではC=MC をコーディングではC=CM で計算しているので
行列の計算順は質問1)と同じですが、行列TやRの算出方法は
今回はたまたま同じ行列TやRが使えるだけで 質問1)と異なりますよね?
0242デフォルトの名無しさん
2011/12/11(日) 09:54:37.99>で、正しいですか?
正しいわけないだろ
0243デフォルトの名無しさん
2011/12/11(日) 12:28:27.29紙の上ってどういう意味?
>>242
何が悪いか言わずに正しいわけないだけ言うのって内容を理解してない人間がよくやる
0244デフォルトの名無しさん
2011/12/11(日) 12:40:56.230245デフォルトの名無しさん
2011/12/11(日) 12:49:30.330246デフォルトの名無しさん
2011/12/11(日) 14:16:09.570247デフォルトの名無しさん
2011/12/11(日) 14:47:23.17右から計算するなら
0248デフォルトの名無しさん
2011/12/11(日) 14:58:12.26おのれー!
0249デフォルトの名無しさん
2011/12/11(日) 16:29:34.26ってことじゃないの?
ここは勉強出来ない、数学出来ない、ライブラリのリファレンス読んでわかったつもりの
ニートとクズの吹き溜まりだから、真面目な質問しても答え返ってこないよ
>>242-247 みたいなレスしか返せない。 さらにバカだと >>246 みたいな頭のおかしいレスになるし。
ちなみに俺は、数学弱いのでよくわからないw
0250デフォルトの名無しさん
2011/12/11(日) 16:49:04.800251デフォルトの名無しさん
2011/12/11(日) 17:17:43.47紙のRやTもOpenGLでは転置になるから同じR T ではない点に注意
(R * T)の転置 = Tの転置 * Rの転置
という関係があるので逆になるように見える。
縦書きと横書きの違いでしかない
つかずっと同じ話してるので、自分で実際にプログラム作って確認してみたらいいよ
0252デフォルトの名無しさん
2011/12/11(日) 18:17:41.79OpenGLでは転置になるとかウソ書くからまた混乱する初心者が増えるんだよ・・・。
OpenGLの主な(?)ドキュメントは列ベクトル表記を採用しているというだけの話だろ。
0253デフォルトの名無しさん
2011/12/11(日) 18:33:20.71その通りです。すいません。
0254デフォルトの名無しさん
2011/12/11(日) 19:32:11.05学校で習った数学での習慣を使った手計算の時の順序が
OpenGLでは逆になるという事だ
0255デフォルトの名無しさん
2011/12/11(日) 19:48:22.38>>249氏のとうりです。
>紙の上=学校で習った数学での習慣を使った手計算の時の順序では、
>>247
確かにです。
>>254
皆さん、有難うございます。
0256デフォルトの名無しさん
2011/12/11(日) 20:05:03.67写像 f1, f2, f3 (対応する変換行列は M1, M2, M3)を考えたときに
列ベクトル [x; y] に f1, f2, f3 を順番に適用すると、
[x'; y'] = f3(f2(f1([x; y])))
= M3 M2 M1 [x; y]
同様のことを行ベクトルで書くと、
[x' y'] = [x y] t(M1) t(M2) t(M3) t(・)は転置
というだけの話だろ
というか、変換行列であることを無視して単なる行列演算の話をしても無意味
0257デフォルトの名無しさん
2011/12/11(日) 20:14:05.98C/C++の配列=行ベクトル
だから逆順に掛けるんだよ
0258デフォルトの名無しさん
2011/12/11(日) 22:50:04.22ハァ??????
0259デフォルトの名無しさん
2011/12/12(月) 00:19:00.500260デフォルトの名無しさん
2011/12/12(月) 00:21:37.570261デフォルトの名無しさん
2011/12/12(月) 17:02:57.84glDrawArraysを用いて全く同じ物を描画しようとすると,
エラーでプログラムが落ちてしまいます.
ウィンドウが一つの時は問題なく描画できています.
頂点の数は2^24個程なのですが,何か制限があるのでしょうか?
頂点の数を減らしても駄目でした.
0262デフォルトの名無しさん
2011/12/12(月) 17:53:24.12昔のことなんで間違ってるかもしれないが
テクスチャとか頂点配列ってウィンドウごとに固有じゃなかったっけ
0263デフォルトの名無しさん
2011/12/12(月) 22:12:10.54いや適当だが
0264デフォルトの名無しさん
2011/12/12(月) 22:52:59.220265デフォルトの名無しさん
2011/12/12(月) 23:00:25.390266デフォルトの名無しさん
2011/12/13(火) 00:38:39.680267261
2011/12/14(水) 10:56:15.94検討したところ,>>262の方の言う通りでした.
VBOを二つ用意しても,予め二つ確保した場合では描画されず,
もう一つのウィンドウを作成したあとにもう一つのVBOを確保してやる必要がありました.
皆様,御助言ありがとうございました.
0268デフォルトの名無しさん
2011/12/14(水) 14:49:13.76それを共有するようにするのが>>265のwglShareListsだったり
glut使ってるとすんなりは無理かもしれないけど
0269デフォルトの名無しさん
2011/12/14(水) 17:02:23.81線のみ色が変わります。塗りつぶすにはどうすればいいでしょうか?
0270デフォルトの名無しさん
2011/12/14(水) 17:15:35.560271デフォルトの名無しさん
2011/12/14(水) 17:47:43.58少なくとも、MFCで四苦八苦するのはもうイヤだし。
OpenGL Menu http://t.co/4BrpJVuT
0272デフォルトの名無しさん
2011/12/14(水) 18:24:05.83それを使って塗りつぶせました。
ありがとうございます。
0273デフォルトの名無しさん
2011/12/14(水) 20:50:01.980274デフォルトの名無しさん
2011/12/14(水) 21:19:57.200275デフォルトの名無しさん
2011/12/14(水) 21:50:46.83MFC使わなきゃいいだけじゃね
stl と boost と自分の過去資産(win32ハンドリング含む)があればまったく不要
と言う俺は最近 Python+OpenGLが楽しい。直書きそのまま実行でGLSLのテスト出来るってのが、
スクラッチ&ビルドで実験コード書いてる時、超絶楽ちんぽん
0276デフォルトの名無しさん
2011/12/15(木) 03:07:36.75文字数にシビアな制限があるわけでもないし、
短縮だとどこへのリンクかURLから予測できないからクリックしずらい
0277デフォルトの名無しさん
2011/12/15(木) 09:16:56.060278デフォルトの名無しさん
2011/12/16(金) 18:14:51.33OpenGLって、ジオメトリインスタンシングを自動でやるのですか。
ディスプレイリストだったら、APIの仕様としてまとめて送るというのは知ってますが
ジオメトリまでやってるとは聞いた事がありません。
0279デフォルトの名無しさん
2011/12/16(金) 18:29:18.900280デフォルトの名無しさん
2011/12/16(金) 19:30:39.69それで出してしまう
関数ポインタを習った後、何でもかんでも関数ポインタ使って実装したのと同じ
0281デフォルトの名無しさん
2011/12/16(金) 19:51:58.100282デフォルトの名無しさん
2011/12/16(金) 20:02:18.4730フレームすら維持できないくらいに頂点を増した状態でインスタンシングすると
60フレームにビターッと張り付く
0283デフォルトの名無しさん
2011/12/18(日) 09:37:33.50みんなはプロジェクションビューとモデルビューどっちに置く?
0284デフォルトの名無しさん
2011/12/18(日) 10:15:36.870285デフォルトの名無しさん
2011/12/18(日) 12:02:02.53曖昧にしか理解していないか、
またはもの凄く話しを省略して話している?
自分が言った内容の詳細を説明してみろ
0286デフォルトの名無しさん
2011/12/18(日) 14:07:21.36それだとライティングやクリッピングその他、色々うまく動かなくなるよね。
0287デフォルトの名無しさん
2011/12/18(日) 14:17:20.92お前の理解はまったくダメダメなので
あと3回OpenGLの教科書を読み直せ
0288デフォルトの名無しさん
2011/12/18(日) 18:05:43.34まさかとは思うが、モデルビューとプロジェクションビューって言う、
プログラム的にまったく作りの異なる別の何かが存在してるとか思ってる?
あと、まさかカメラって言う、プログラム的に独立した、
何か曖昧なオブジェクトが存在してると思ってる?
0289286
2011/12/18(日) 18:28:08.72お二人とも、想像力豊かなコトでw
0290デフォルトの名無しさん
2011/12/18(日) 18:59:56.560291デフォルトの名無しさん
2011/12/18(日) 20:02:32.63「ここは茶臼山でしょうか?」
↓
関西人「ちゃうス」
0292デフォルトの名無しさん
2011/12/18(日) 20:20:45.45自前で行列管理してる話とかじゃないのかしら
0293デフォルトの名無しさん
2011/12/18(日) 22:51:23.18glMatrixMode(GL_PROJECTION);
gluLookAt(up_.x, up_.y, up_.x, eye_.x, eye_.y, eye_.z, center_.x, center_.y, center_.z);
こうするかって話じゃねーの?
glMatrixMode(GL_MODELVIEW);
gluLookAt(up_.x, up_.y, up_.x, eye_.x, eye_.y, eye_.z, center_.x, center_.y, center_.z);
0294デフォルトの名無しさん
2011/12/18(日) 22:52:00.440295デフォルトの名無しさん
2011/12/19(月) 08:43:44.81多分
0296デフォルトの名無しさん
2011/12/19(月) 11:40:52.17・glut: クロスプラットフォームなツールキット。でもさすがに古くさい
・glew: これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo: 自分の使っているカードのOpenGLの機能が全てリストアップされる。
・OpenTK C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。
OpenGLちゅんは、なんでこんなに分家しとるん?
いちいちめんどくさいだろ。
1つで全部できるようなもんないのか
0297デフォルトの名無しさん
2011/12/19(月) 11:50:10.150298デフォルトの名無しさん
2011/12/19(月) 11:56:34.57一人や一箇所が全部作ってる訳じゃないから。 分家してるとか、そういう事じゃないんだよ。LinuxやUnixのOSとかもそうだけど。
コンピュータの世界にあるライブラリや製品の多くがそうなように、それぞれバラバラに、
誰かがいつか思いついて開発して、そして増えて広がっただけ。 またはプロダクトの設計上、疎結の関係にして切り離したりしてるだけ
俺らが、他人の生み出した物を使わせてもらう分際で、それすらめんどくさいと思うのなら、
むしろ自分で一つにまとめたライブラリでも作って自分で使うか、または世界に発表して、標準化しておくれ。
誰にでもそうやって、高名を得るチャンスは平等にあるんだから
0299デフォルトの名無しさん
2011/12/19(月) 12:04:05.260300デフォルトの名無しさん
2011/12/19(月) 12:16:28.840301デフォルトの名無しさん
2011/12/19(月) 13:23:01.03わらったw
0302デフォルトの名無しさん
2011/12/19(月) 15:19:18.340303デフォルトの名無しさん
2011/12/19(月) 18:32:49.87glGetActiveUniformARBでシェーダ側の変数名を得ると
シェーダ側の変数が"uniform mat4 JointTransform[62];"の時
amd "JointTransform"
nvidia "JointTransform[0]"
と返ってくる
0304デフォルトの名無しさん
2011/12/19(月) 20:35:01.94>1つで全部できるようなもんないのか
いいとこに気がついたね
誰もそういうのを作ってないんだよ お前が作ればいいじゃん
0305デフォルトの名無しさん
2011/12/20(火) 08:14:09.99バグかどうか知らんけどうちでもそうなる。
もう随分前からずっとそうなので、そういうもんだと思ってやってる。
0306デフォルトの名無しさん
2011/12/20(火) 10:50:30.42だな。
そしてglなんとかがまた一つ増えるw
0307デフォルトの名無しさん
2011/12/21(水) 05:31:10.570308デフォルトの名無しさん
2011/12/21(水) 12:54:40.15接頭詞としてglつけろ”という決まりでもあるのか。
glグレネードランチャーとかいうの作ったら、略称がglglになるじゃねえか。
0309デフォルトの名無しさん
2011/12/21(水) 13:41:33.490310デフォルトの名無しさん
2011/12/21(水) 23:23:43.190311デフォルトの名無しさん
2011/12/21(水) 23:52:38.100312デフォルトの名無しさん
2011/12/22(木) 01:45:12.94つかSFMLすげえな。SDLだったらSDL_imageやSDL_mixerが必要なところをこれひとつで全部賄えるなんて
0313デフォルトの名無しさん
2011/12/22(木) 09:41:14.44uniform変数を使うと挙動がおかしくなるんですけど
uniform int n;
for(int i = 0 ; i < n ; i++){...
こんなの
これなんなんでしょうね
main関数以外でも同じようなことやってるんですがそっちは別段なんともないんですよね
0314デフォルトの名無しさん
2011/12/22(木) 09:57:30.13なんだこれ・・・
0315デフォルトの名無しさん
2011/12/22(木) 10:37:55.73標準では無理だった気がする。まだベンダー拡張じゃなかったか
0316デフォルトの名無しさん
2011/12/22(木) 11:16:54.55あとGLSLは#version 120
0317デフォルトの名無しさん
2011/12/22(木) 18:47:56.900318デフォルトの名無しさん
2011/12/24(土) 03:01:22.09glUniform
0319デフォルトの名無しさん
2011/12/25(日) 02:25:27.39なんか回避方法ないかねこれ
0320デフォルトの名無しさん
2011/12/25(日) 09:35:52.680321デフォルトの名無しさん
2011/12/25(日) 11:30:17.68WebGLのGLSLはループ回数(の上限)がコンパイル時に決まらないといけないから
for (int i=0; i<8; ++i) {
if (i >= num_lights) continue;
...
}
みたいな書き方になったりする。
0322デフォルトの名無しさん
2011/12/25(日) 12:06:40.62WebGL って OpenGL を JavaScript から使うバインダか何かじゃなかったか。
Python から OpenGL を使う PyOpenGL みたいな、要は
ほにゃららから OpenGL を使う 何とか、みたいなそういう立場の物。
なので、先に WebGL の話だけど、って前提置いてから話さないと、
君が一人で思ってる事なんて、誰にも伝わらないよ
0323デフォルトの名無しさん
2011/12/25(日) 12:19:42.96使わないライトは0になる値を入れておけば問題ない
0324デフォルトの名無しさん
2011/12/25(日) 12:22:04.66データとしてライトの情報を入れて、シェーダー側で参照ってできんの?
0325デフォルトの名無しさん
2011/12/25(日) 12:29:37.330326321
2011/12/25(日) 12:29:58.56何を勘違いしてるのか知らないけど。
俺は319じゃないし、単にこういうこともあるって書いただけだよ。
>>324
できる。
0327デフォルトの名無しさん
2011/12/25(日) 12:33:44.10浮動小数点フォーマットのテクスチャファイルに、長い行列の要素放り込んで
シェーダ側でそれを参照、とかは珍しくない話。だが、
>データとしてライトの情報を入れて
これがどこまでを想定してるのが曖昧なので、YesともNoとも言いにくい
自分が使いたい情報で、かつUniform変数で渡してられないほどの分量があった時、
かつ浮動小数点フォーマットのテクスチャが使える環境なら、そういう手段を取る事もあるでしょう、って話
0328デフォルトの名無しさん
2011/12/25(日) 12:36:30.60じゃあそれを最初に言えよ。>>319-321 の流れみたら、普通に本人だと思うだろうが。
なんでお前も前提置いて話せないの?
お前が一人で思ってる事なんて、誰にも伝わらな… あれ?デジャブ?
0329デフォルトの名無しさん
2011/12/25(日) 12:47:04.90恥ずかしかったのは分かるがそう開き直られてもな。
お前みたいなアホの事まで考慮して書き込む気は無い。
0330デフォルトの名無しさん
2011/12/25(日) 12:47:16.38どうでもいいけどそこはbreakじゃだめなん?用途しだいか?でもcontinueである場合ってないよな?
0331デフォルトの名無しさん
2011/12/25(日) 12:50:47.04なんだったけかな…よく覚えてないけど、breakだとうまく動かなかったような。
0332デフォルトの名無しさん
2011/12/25(日) 12:57:26.07いやアホはどう見てもお前。狭い了見の自己中。
それに気づいていないで開き直ってるお前が、まさにアホ
0333デフォルトの名無しさん
2011/12/25(日) 13:01:15.590334デフォルトの名無しさん
2011/12/25(日) 13:03:43.79ちょっとそんな抜け道がと思ってやってみたがなんでか駄目だった
break continueどっちも試したが反応なしというか
0335デフォルトの名無しさん
2011/12/25(日) 13:20:41.56横から口挟むけど>>319は環境については触れていないのに>>321で突然WebGLに話が具体化
この流れはどう見ても本人が情報後出ししたケースの流れ
国語の勉強の話しになるけど本来は「WebGLのこと言ってるなら」とか書くべき
ちょっと脳内スキップ発揮しすぎかと
オフでも多分周りの人間はあなたの話しについて行けてないと思う
0336デフォルトの名無しさん
2011/12/25(日) 13:23:30.95uniform変数は0
for文のイテレーター変数は増えない
0番目のライトのみデフォルトで取得
この条件下で行われるのかもしれない
0337デフォルトの名無しさん
2011/12/25(日) 13:24:51.04安価先、>>321 >>326 >>329 宛てだなそれ
0338デフォルトの名無しさん
2011/12/25(日) 13:25:52.34あーいや、2番目おかしいな
もうわかんねえなこれ
0339デフォルトの名無しさん
2011/12/25(日) 13:44:16.46ありがと
0340デフォルトの名無しさん
2011/12/25(日) 14:07:50.08じゃあ
for (int i=0; i<8; ++i) {
if (i < num_lights) {
...
}
}
みたいな感じではどう?
それでダメならプログラム間違ってるんじゃないかとw
「反応なし」の意味がちょっと分からないけど。
0341デフォルトの名無しさん
2011/12/25(日) 14:15:34.88>>321は回避方法を書いてる
という状況で、>>321が>>319本人だと誤認するロジックが分からん。
国語の勉強の問題なの?
0342デフォルトの名無しさん
2011/12/25(日) 15:39:15.12>>321 が >>319 の回避方法じゃなくて、追加情報と解釈してしまったのだと思う
つまり、>>321 の方法しかないのか? もっといい方法無いの? と質問しているように取ったと
たぶん、これがロジックだと思う
国語の勉強の問題なのかどうかは分からないし、このスレとは何の関係もない
余計な煽りをしないで、双方さっさと誤解を解いて話を続けた方が良い
0343デフォルトの名無しさん
2011/12/25(日) 15:43:06.37ついでに言うと、>>321 の前に >>320 があることも誤解を生んだ原因かと
>>319 の質問に対して >>320 が答え、そうなんだけどさと>>321(>>319)が追加質問
のように見えてしまったんだろ
0344デフォルトの名無しさん
2011/12/25(日) 16:01:47.10つか結局WebGLの話なのか?
0345デフォルトの名無しさん
2011/12/25(日) 16:43:27.970346デフォルトの名無しさん
2011/12/25(日) 17:12:26.45それで効きました
ただ・・・なんか動作が全部チェックしているときの重さと変わらない感じ
for(int i = 0 ; i < gl_MaxLights ; ++i){...
プログラムはコメントアウトしたりして比較しているので間違っては無いと思いたい
反応なしは、1個目0番のライトだけアクティブで他のライトが反応しない状態
なんかもうライトの変数なんて高が知れてるから全部uniform化させてしまおうと思えてきた
0347デフォルトの名無しさん
2011/12/25(日) 17:21:40.56まったくその通り
0348デフォルトの名無しさん
2011/12/25(日) 17:32:06.25だから「ライトが反応しない」じゃ意味分からないってばw
built-in変数に値が設定できてないとか?
0349デフォルトの名無しさん
2011/12/25(日) 17:41:38.20そういうことです
0350デフォルトの名無しさん
2011/12/25(日) 18:35:38.680351デフォルトの名無しさん
2011/12/25(日) 19:01:12.870352デフォルトの名無しさん
2011/12/25(日) 19:49:07.95floatに頼子だ割ったプログラムソースを目指す人のためのブランド「float志向」
0353デフォルトの名無しさん
2011/12/25(日) 20:23:30.410354デフォルトの名無しさん
2011/12/25(日) 20:27:13.650355デフォルトの名無しさん
2011/12/26(月) 03:17:34.79つまり、固定数ループのfor文で、ループ中で条件かけても
条件が変数でコンパイラが事前に分からないなら
吐き出されるオペコードは、個定数ループを処理する長さと同じ
例え条件で、ジャンプして処理を多少飛ばした所で
シェーダーのオペコード数は同じなんだから大して軽くならない
マジで最適化かけるなら
#if や #ifdef 等でコードをライト数分用意して
動的に切り替わる仕組みを入れないと駄目なんじゃないかな?
0356355
2011/12/26(月) 03:29:13.26if文は重たいなんて言われてたでしょ、そんなイメージ
因みに、うちの会社のライブラリは、シェーダー内に
#if や #ifdef なんかが可読性を殺す程入ってて
バカにしてたけど、シェーダー最適化の説明を聞いて納得した
例を挙げると、シェーダー初期化前にライト数を決めると
そのライト数を処理するシェーダーコードになる仕組み、見たいな
(実行中に変えると、シェーダーの再初期化が入るので非推奨って感じ)
0357355
2011/12/26(月) 03:39:33.79ライト数に応じて可変の最軽量負荷のコードを吐くのは無理かと思われる
一番簡単なのは、一番バカっぽいけど
ライト数文のシェーダーファイル(コード?)を用意して
ライト数に応じて、各シェーダーを適応すれば良い
シェーダーやシステムをスッキリさせるか、最適化シェーダーを目指すかは
仕組みを理解して、自分でバランスを決めて実装するしかないと思うよ
確か、GLSLコンパイラでシェーダーアセンブラを吐く機能があったから
まずはそれから試してみなよ
0358デフォルトの名無しさん
2011/12/26(月) 04:35:52.19ためになる話ありがとうございます
シェーダアセンブラは初めて聞きました、敷居高そうですが心に留めておきます
0359デフォルトの名無しさん
2011/12/26(月) 17:07:26.71みんなそれでやっていた。
0360デフォルトの名無しさん
2011/12/26(月) 17:07:59.22HLSLはCgの無断モロパクリだからな
0361デフォルトの名無しさん
2011/12/26(月) 20:28:19.01クロック数とか気にしちゃう系
0362デフォルトの名無しさん
2011/12/27(火) 01:12:18.270363デフォルトの名無しさん
2011/12/27(火) 18:17:59.29この板が扱う話題の性質上、IDが出ると
必死チェッカーで照らしあわせれば
どこの企業(大学)に属してて何をやってるのかとか、おぼろげながら分かってしまうからな
0364デフォルトの名無しさん
2011/12/27(火) 18:22:37.440365デフォルトの名無しさん
2011/12/27(火) 19:14:22.550366デフォルトの名無しさん
2011/12/29(木) 23:14:58.130367デフォルトの名無しさん
2011/12/29(木) 23:28:26.280368デフォルトの名無しさん
2011/12/29(木) 23:33:56.770369デフォルトの名無しさん
2011/12/29(木) 23:42:03.720370デフォルトの名無しさん
2011/12/30(金) 05:08:09.06ライト使ったらGL_QUADSの方もマテリアル設定しないといけないとか?
http://ideone.com/q6Ego
0371デフォルトの名無しさん
2011/12/30(金) 09:14:32.680372デフォルトの名無しさん
2011/12/30(金) 10:53:42.16あと頂点ライティングだからピクセル単位でグラデーションは出ないのを忘れるな
0373デフォルトの名無しさん
2011/12/30(金) 11:33:21.25馬鹿じゃないもん><
0374デフォルトの名無しさん
2011/12/30(金) 13:11:28.820375デフォルトの名無しさん
2011/12/31(土) 04:20:20.590376デフォルトの名無しさん
2012/01/04(水) 00:09:50.53今は各ピクセルの色取り出してglVertex3dで描画みたいな効率の悪いことやってる
0377デフォルトの名無しさん
2012/01/04(水) 00:12:22.210378デフォルトの名無しさん
2012/01/04(水) 00:36:39.410379デフォルトの名無しさん
2012/01/04(水) 00:41:22.60テクスチャって2のn乗じゃないと駄目なんだよね?
800*600とか色々なサイズに対応したいからそこで困ってる
0380デフォルトの名無しさん
2012/01/04(水) 00:44:05.04どっからか走らないが最近のはどんなサイズにも対応してるはず
0381デフォルトの名無しさん
2012/01/04(水) 00:50:12.44800*600なら1024*1024のテクスチャ使えばいいじゃん
0382デフォルトの名無しさん
2012/01/04(水) 00:54:28.160383デフォルトの名無しさん
2012/01/04(水) 00:55:39.85きっと2のn乗の方が効率は良いんだろうけど、他のやり方するよりはずっとましだと思う。
0384デフォルトの名無しさん
2012/01/04(水) 01:39:23.430385デフォルトの名無しさん
2012/01/04(水) 12:45:07.500386デフォルトの名無しさん
2012/01/04(水) 13:49:48.65メモリの無駄感は否めない
0387デフォルトの名無しさん
2012/01/04(水) 13:56:06.400388デフォルトの名無しさん
2012/01/04(水) 15:39:21.85θ度回転させた結果のeyeとupのベクトルを得たいんだけどどんな行列かければいい?
0389デフォルトの名無しさん
2012/01/04(水) 15:46:17.79脳が拒否する文面なのでまず正確な文章がかければいい
0390デフォルトの名無しさん
2012/01/04(水) 15:58:39.65eye, upを変化させて対象物(centerの座標)を中心に回転させたいです。
イメージとしてはcenterとeye間をヒモで繋いでぐるぐる回す感じです。
回転させる向きは以下の通り
1.upベクトル方向
2.upベクトルと(center-eye)ベクトルの外積方向
1.、2.についてθ度回転させたeye, upを得るためにはeye, upにどんな行列、
を掛ければいいでしょうか。
0391デフォルトの名無しさん
2012/01/04(水) 16:11:41.18でもこれは回転方向と軸方向を一致させないと駄目っぽいか
数学できるならhttp://www.cg.info.hiroshima-cu.ac.jp/~miyazaki/knowledge/tech07.html
このへん見ながら直接eye upを操作させるとか
なんか俺がOpenGL使えてない気がしてきた
0392デフォルトの名無しさん
2012/01/04(水) 16:12:43.36カメラの方向ベクトルを軸にして、θ度回転させたい
= とある任意の軸を中心にθ度回転させたい、って話だろ?
って、くるとクォータニオンの得意分野
0393デフォルトの名無しさん
2012/01/04(水) 16:19:22.38>>392
クォータニオン・・・がんばります
>>391
このサイトいいですね参考にさせていただきます
0394デフォルトの名無しさん
2012/01/05(木) 06:23:42.38glScalef(1.0f, 1.0f, -1.0f) もしくは、
glScalef(-1.0f, 1.0f, 1.0f) で出来ますよね?間違っていたら指摘お願いします。
で、今Javaで、OpenGL使っているので、JOGLを使っています。
JOGLのバージョンは、Jogamp v2.0 rc5なのですけど、z軸を-1.0倍すると何も映らなくなって、x軸を-1.0倍した結果と違ってしまいます。
これってバグでしょうか?私の勘違いでしょうか?コレだけの情報ではわからないでしょうか?
ttp://ideone.com/A1dtB
97、98行目です。
0395デフォルトの名無しさん
2012/01/05(木) 07:10:25.050396デフォルトの名無しさん
2012/01/05(木) 11:08:29.920397デフォルトの名無しさん
2012/01/05(木) 17:58:00.95Zを-1するのだって、行列等の諸々の結果に対して有効であって
途中の計算とかあるなら、Zを-1した所でおかしくなるだけ
詳細を伝えない&自分が理解してないでZに-1スケールしてるだけなら、
聞いた所でちゃんとした挙動にならない&理解出来ないんじゃない?
行列と3D処理を理解して、ちゃんと行列処理を右手系にかえるしかないと思うが?
0398デフォルトの名無しさん
2012/01/05(木) 18:51:55.10カメラの方向変えないとな。
0399デフォルトの名無しさん
2012/01/05(木) 19:23:45.21リンク先を見る限り、Rotationしかしてない
>OpenGLの左手座標系を、右手座標系に変換したいときって、
この質問の仕方で、全然理解してないのが分かる
左手系、右手系とは行列処理の事だろ
例えば左手系前提で作られたモデルがあり、右手系の行列処理でレンダリングしたら
ポリゴンが裏向きになってカリングされてしまうとかの場合
よって最後にスケールZ-1をする事で左手系のモデルを右手系で描画する
とかの場合に、Z-1とかにするんだよ
つかもともとOpenGLの行列処理は右手系
何が左手系なんだ?
頂点って言うんだったら、処理は右手系のまま頂点の2番目と3番目を入れ替えてみれば
CWがCCW、もしくはCCWがCWになって上手く行くかもね
0400デフォルトの名無しさん
2012/01/05(木) 19:47:08.180401デフォルトの名無しさん
2012/01/05(木) 20:08:53.670402デフォルトの名無しさん
2012/01/05(木) 23:19:02.810403デフォルトの名無しさん
2012/01/05(木) 23:46:52.62俺モデルデータをファイルから読込みむ時に頂点順序反転する処理入れてた・・・・・
scaleで行けたのか・・・・・・・・・・・
0404デフォルトの名無しさん
2012/01/06(金) 00:17:02.70でいいと思うけど。
0405デフォルトの名無しさん
2012/01/06(金) 01:04:12.770406デフォルトの名無しさん
2012/01/06(金) 09:50:22.840407デフォルトの名無しさん
2012/01/06(金) 20:55:06.19現在では速度差はあまりないが。
最近ではOpenGLの方が活気付いているけど、DirectX9.0cまでは付け入る隙など無かった。
0408デフォルトの名無しさん
2012/01/07(土) 01:06:28.22だってさww
0409デフォルトの名無しさん
2012/01/07(土) 03:33:19.150410スーパーレフト ◆WIIamZako.
2012/01/07(土) 03:46:11.57酉やるからほら
スーパーレフト#孰扞wPSX
0411デフォルトの名無しさん
2012/01/07(土) 10:38:51.160412デフォルトの名無しさん
2012/01/07(土) 12:58:18.97そこは、左手系だから超速いと言いたいんじゃないと思うぞ
当時のOpenGLよりもゲーム向き(=速い)なライブラリだったからみんなが使って、
それがたまたま左手系だったから「左手系」が一気に広まった事を言いたいのだと思う
あくまで、一気に広まった要因は速かったからで、左手系だからと言いたいわけではないだろ
すぐ後で、現在では速度差はあまりないがとも言ってるし
と、俺は読み取ったが、どうだうか
0413デフォルトの名無しさん
2012/01/07(土) 13:33:00.520414デフォルトの名無しさん
2012/01/07(土) 15:43:16.42「左手系だから超速い」と読み取るのが自然かと。
>>412
それならば、
DirectXが左手系で超速い、ではなく、左手系のDirectXが超速い
にしないと、意味が正しく伝わらない。
複数の意味に取れる文章を書いてはダメって、大学で教わらなかったのか?
0415デフォルトの名無しさん
2012/01/07(土) 15:47:36.96曖昧な文章だとは思うよ
でも、相手がどう読み取って欲しいのか、は何故か分かってしまう場合が多い
それを分かってて逆に取って馬鹿にするのが 2ch の遊び方の一種なのも知ってる
0416デフォルトの名無しさん
2012/01/07(土) 17:44:53.99いや、お前の読解力がおかしいだけだろ
「『DirectXは左手系で』超速い」は普通の日本語なら「『DirectXは左手系だから』超速い」という意味には読まないぞ
0417デフォルトの名無しさん
2012/01/07(土) 17:58:59.510418デフォルトの名無しさん
2012/01/07(土) 19:17:28.54ここ一ヶ月のスレの流れ読めばスーパーレフトさんが来たと思うのも自然だろう
0419デフォルトの名無しさん
2012/01/07(土) 19:21:38.580420デフォルトの名無しさん
2012/01/07(土) 20:12:26.130421デフォルトの名無しさん
2012/01/07(土) 20:39:58.82外人か普段人と接してない人間と睨んでる
0422デフォルトの名無しさん
2012/01/07(土) 21:21:08.63マルチウィンドウ機能をデフォルトで装備するものってある?
少なくとも GLFW はウィンドウひとつしかサポートしない
GLUT はやってみた人がいるようだが、公式サポートではないらしく注意が多い
0423デフォルトの名無しさん
2012/01/07(土) 21:45:23.85> GLUT はやってみた人がいるようだが、公式サポートではないらしく注意が多い
とか言ってるお前にゃ無理だな
0424デフォルトの名無しさん
2012/01/07(土) 21:53:02.78OS の API や環境に依存しそうな部分はできるだけ触りたくない
しっかりとラッピングしておいてほしいんだ
Haskellでプログラムしてるから、
Haskell用ラッパーの作成にも時間を取られる
GUI構築よりも本来注力したい仕事にさっさと取りかかりたいんだよ
> とか言ってるお前にゃ無理だな
無理だったら別の方法を考えるから、とにかく OSG や Coin3D を調べてみるよ
ありがと
0425デフォルトの名無しさん
2012/01/07(土) 21:57:53.940426デフォルトの名無しさん
2012/01/07(土) 22:20:59.69GLUTは一度入ったメインループから抜け出せない仕様が扱いにくいんだが、
今は背に腹は替えられない状況なんで検討してみる
ありがと
0427デフォルトの名無しさん
2012/01/07(土) 22:46:59.290428デフォルトの名無しさん
2012/01/07(土) 23:04:27.610429デフォルトの名無しさん
2012/01/07(土) 23:24:40.52APIHookするしかないのか
0430デフォルトの名無しさん
2012/01/07(土) 23:30:58.530431デフォルトの名無しさん
2012/01/08(日) 00:31:31.410432デフォルトの名無しさん
2012/01/08(日) 10:28:56.50ってかglutリークもOpenGLもメモリリークしてるがな...
0433デフォルトの名無しさん
2012/01/08(日) 11:01:33.55そういう時にファイル保存の処理をするんだよ
0434デフォルトの名無しさん
2012/01/08(日) 11:21:31.83windowのXボタンのことならatexitで処理すればいいし
0435デフォルトの名無しさん
2012/01/08(日) 12:08:01.39終了しますか?(はい/いいえ)
って聞かれたことない?
それは置いといて実用目的でGLUT使うのは間違ってる
0436デフォルトの名無しさん
2012/01/08(日) 12:12:36.11GLUTがメインループを持ってるせいで、
一部の同じくメインループを持つFRPライブラリと相性が悪い
またGLUTがイベントドリブンなのも、
いくつかのFRPライブラリとの相性を悪くしてる
0437デフォルトの名無しさん
2012/01/08(日) 12:34:06.91いっそ表示とそれ以外にスレッド分けたほうがスッキリしそう
0438デフォルトの名無しさん
2012/01/08(日) 18:56:40.030439デフォルトの名無しさん
2012/01/08(日) 22:08:21.43馬鹿で悪かったな。そんな押されちゃ困るXボタンなら消しときゃいいだろ
0440デフォルトの名無しさん
2012/01/09(月) 04:45:06.230441デフォルトの名無しさん
2012/01/09(月) 15:32:24.700442デフォルトの名無しさん
2012/01/09(月) 17:37:55.40ttp://www.pouet.net/prod.php?which=57446
でも商用ソフトとかでglutを使うのはちょっとどうかと思うよ。
OpenSceneGraphとかUDKとかのゲームエンジンの方がもっと機能が多いよ。
0443デフォルトの名無しさん
2012/01/09(月) 18:07:36.17>OpenSceneGraphとかUDKとかのゲームエンジンの方がもっと機能が多いよ
レイヤが違うんだから当たり前だろ。せめて理解してから喋れ
0444デフォルトの名無しさん
2012/01/11(水) 03:20:30.85GLSLを使ってメッシュを表示しているのですが、
2台のPCで結果を確認すると、一方では正常に表示されるのに、もう一方では何も表示されません。
ダメなPC(デスク)
Win7 32bit
RADEON HD5750
正常なPC(ノート)
Win7 64biy
intel HD3000
デバッグするとどちらもGLSLのコンパイルは正常に完了しており、レンダリング中に何のエラーもありません。
ただ、スプライト(板ポリ)を表示する簡単なシェーダだけはRADEONでも正常に動きます。
ポリゴンを表示するシェーダだけがRADEONで動かないのは何が原因でしょう?
0445デフォルトの名無しさん
2012/01/11(水) 03:42:34.810446デフォルトの名無しさん
2012/01/11(水) 10:43:26.92確かATI系だけは設定しないと表示されなかったはず
0447デフォルトの名無しさん
2012/01/11(水) 18:17:40.410448デフォルトの名無しさん
2012/01/11(水) 18:30:00.84作ったとおりに動くのがATI。正しく作らなかったら正しく動かないのがいい
NVIDIAはわりといい加減に作っても動くけど、それは正しい動作ではない
0449デフォルトの名無しさん
2012/01/11(水) 18:39:28.91///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
nvidia
0450デフォルトの名無しさん
2012/01/11(水) 19:00:10.69ATIで動いたシェーダはNVIDIAでも動くってのは正解?
つまり開発環境としてはRADEONの方が無難?
0451デフォルトの名無しさん
2012/01/11(水) 20:15:32.80っていうか融通がきかないんだよRADEONは
0452デフォルトの名無しさん
2012/01/11(水) 21:48:35.36OpenGLのエラーが出てないか調べたら良いかも。GL_ARB_debug_outputとか。
又は、gDebuggerとか今はタダだから使ってなかったら試してみたらコード変更しなくてもエラーが見つけられるかも。
0453デフォルトの名無しさん
2012/01/11(水) 21:49:13.24ここの方法を参考に弄ってやってみようとしたけど、できん
ttp://www21.atwiki.jp/opengl/pages/24.html
0454デフォルトの名無しさん
2012/01/11(水) 21:51:39.99ドライバの出来次第では?
古いNVのドライバだと対応してないテクスチャフォーマットがあったりもしたよ。
0455デフォルトの名無しさん
2012/01/11(水) 21:52:19.330456デフォルトの名無しさん
2012/01/11(水) 22:03:23.31予め必要な文字を描いておいたテクスチャの一部をビルボードに貼って表示すれば良い
これが一番簡単だ
文字の形をした立体オブジェクトを表示させたいのなら、
FreeFontでも使ってフォントのアウトライン(ベジェ曲線)を得て、
それをtrianglizeして表示すれば良い
0457デフォルトの名無しさん
2012/01/11(水) 22:07:53.35ごめんなさい。Windowsでglut使ってます。WindowsなんでWin32API使ってもいい
>>456
そのテクスチャの方法でやりたいんだけど、その元の文字を画像にしたものの作り方
で簡単に出来る方法が知りたいです。自分で平仮名から漢字まで全部用意するのは
現実的ではないし
0458デフォルトの名無しさん
2012/01/11(水) 22:23:38.89普通は自分で用意するんだよ
どの文字を必要としているかは人ぞれぞれなんだから
それが面倒だと言うのなら、
例えばTUF-8やShift-JISの何番から何番までの文字を列挙したビットマップを作る
という考え方もある
これならプログラムを書いてある程度自動化できるだろ
スクリプトが書けるテキストエディタで文字を列挙してスクリーンキャプチャを撮るとか
ビットマップからデバイスコンテキストを取って、それに対してTextOutして、
そのビットマップをファイルに保存するとか
0459デフォルトの名無しさん
2012/01/11(水) 22:28:02.87> スクリプトが書けるテキストエディタで文字を列挙してスクリーンキャプチャを撮るとか
え?w 普通OSが用意してる文字をビットマップに書き込むAPIを利用するだろ
0460デフォルトの名無しさん
2012/01/11(水) 22:31:53.550461デフォルトの名無しさん
2012/01/11(水) 22:47:53.88> え?w 普通OSが用意してる文字をビットマップに書き込むAPIを利用するだろ
どこに笑える要素があるのか、詳しく聞きかせろ
私は「どの文字」をビットマップに描くのかを指定する方法のひとつとして、
連続した文字コードの文字をビットマップに並べるという「考え方」を提案した
文字コードが連続している文字を使えば for ループが使えるからな
それ以外に「どの文字」をビットマップに描くのかを指定する方法があるのなら、
>>457 に提案してやってくれ
あと、スクリーンキャプチャの方法を提案したのは、
あくまでも主目的は文字を3D空間に表示する事であって、
文字が描かれたテクスチャ(ビットマップ)を作る方法は「簡単なら何でも良い」
と解釈したからだ
そして、質問者にとってどのような方法が簡単なのか私は知らない
だから、もうひとつ TextOut 関数を使う考え方も提案した
私は文字を「直接」ビットマップに描く OS の API は知らない
知っているのなら関数名を >>457 に教えてあげるべきだろ
その方がより楽なのは明らかなのだから
0462デフォルトの名無しさん
2012/01/11(水) 22:53:18.040463デフォルトの名無しさん
2012/01/11(水) 23:01:36.470464デフォルトの名無しさん
2012/01/11(水) 23:31:36.690465デフォルトの名無しさん
2012/01/11(水) 23:48:29.270466デフォルトの名無しさん
2012/01/11(水) 23:49:01.68できない方法ってのは wglUseFontBitmapsW使ってるみたいだし、
3D空間に文字出してクルクルまわしたいとかそういうことじゃないのだよね?
glutならwglGetCurrentDCでhdcもってきてとかそういう話だったりして
0467デフォルトの名無しさん
2012/01/11(水) 23:59:33.04何ができないのか、まずはそれからだ。
エスパーだけどglLoadIdentityとかglOrthoとかしてないから画面外に文字が出てて
表示されてないだけと見た。
0468デフォルトの名無しさん
2012/01/12(木) 00:02:37.940469デフォルトの名無しさん
2012/01/12(木) 00:09:33.36今は問題ない
0470デフォルトの名無しさん
2012/01/12(木) 00:13:37.36ありがとうございました
0471453
2012/01/12(木) 02:23:43.74描画したピクセルデータをテクスチャにする方法でやってみると上手くできました。
0472デフォルトの名無しさん
2012/01/12(木) 07:37:19.76>>453のサイトで自分も勉強し始めたばかりなのですが、一番簡単な空のウインドウを表示するでなぜかウィンドウ内がスクリーンキャプチャしたようになってしまいます。
2〜7までは正常に実行できるのですが、8の円を描画するや目的のスタティックメッシュ編は1の同様ウィンドウがおかしな表示になってしまいます。
上述のようにRADEONのボードが関係あるのでしょうか?
0473デフォルトの名無しさん
2012/01/12(木) 07:40:57.030474デフォルトの名無しさん
2012/01/12(木) 17:44:57.29時間を無駄にするだけだ
0475デフォルトの名無しさん
2012/01/12(木) 18:21:03.45空のウィンドウが開くプログラムは画面のクリアすらしてないので、ウィンドウ内がスクリーンキャプチャになってても正常かと
8のプログラムはglutInitDisplayModeでダブルバッファにしているが、
glutCreateWindowより下でやってる。入れ替えれば動くかもね
うちのPC(NVIDIA)ではそうだった
0476デフォルトの名無しさん
2012/01/12(木) 19:05:37.80アドバイスありがとうございます。
glutInitDisplayModeとglutCreateWindowを入れ替えたら無事に円を表示する事ができました!
9.文字列描画も同じ方法で正常に実行できたので以下のプログラムもそれに気をつけてビルドしてみます。
RADEONである事は関係なかったようですね…。
0477デフォルトの名無しさん
2012/01/12(木) 19:27:13.12そこで続けるのか。OpenGL関係ないことのが多いような気がするが。
0478デフォルトの名無しさん
2012/01/12(木) 20:52:17.430479デフォルトの名無しさん
2012/01/13(金) 00:05:45.820480デフォルトの名無しさん
2012/01/13(金) 00:08:28.16君は正しい道を歩んでいる
0481デフォルトの名無しさん
2012/01/14(土) 10:14:44.92man glBegin でmanを見るには具体的にはどうすればよいのでしょうか?
0482デフォルトの名無しさん
2012/01/14(土) 12:09:03.11ググったら和歌山大学とかいうFラン大が出てきたがそこの学生か?
0483デフォルトの名無しさん
2012/01/14(土) 13:28:35.08そのサイト、おっさんで会社員の俺もよくみるが
0484デフォルトの名無しさん
2012/01/14(土) 13:44:13.91www.google.co.jp/search?q=site%3Aopengl.org+glBegin
0485デフォルトの名無しさん
2012/01/14(土) 14:03:13.750486デフォルトの名無しさん
2012/01/14(土) 14:14:46.55なんで?
0487デフォルトの名無しさん
2012/01/14(土) 14:15:59.740488デフォルトの名無しさん
2012/01/14(土) 17:29:06.46OpenGLで作る Android SDKゲームプログラミング
って本は最悪だった
Amazonで評価が良かったから、買ってみたら
プログラミングのスタイルは悪いわ
後半にいくにしたがって、段々記述が荒くなってくるわで、散々な目にあった
極めつきは、VBOのソースで、
AndroidはJAVAなのに、メモリ割り当てとか無茶苦茶なことをやろうとした挙げ句に
「Sizeof」とか書いてあるの。もうアホかと、バカかと
NDKではなくSDKなのに、Sizeofはねーだろうよ
碌にコンパイルすらしていないのがバレバレ
初心者が買ったら、わけがわからなくて確実に詰むね
こんな本で3000円も取るなんてふざけてる
0489デフォルトの名無しさん
2012/01/14(土) 17:56:16.120490デフォルトの名無しさん
2012/01/14(土) 19:06:25.07さあ早くAmazonでボロクソにレビューする作業に戻るんだ
0491デフォルトの名無しさん
2012/01/14(土) 19:09:57.090492481
2012/01/14(土) 20:56:43.17Unix系の開発環境を使いたくて、VMware + Ubuntu にしました。
man で シンタックスが分かる方法ありましたら教えてください。よろしくお願いします。
それと、皆さんどんな開発環境を使っているのでしょうか?
0493デフォルトの名無しさん
2012/01/14(土) 21:23:23.140494デフォルトの名無しさん
2012/01/14(土) 23:14:31.460495デフォルトの名無しさん
2012/01/14(土) 23:39:43.06"ubuntu manpage OpenGL"でググってみれば
0497デフォルトの名無しさん
2012/01/16(月) 21:28:22.24プログラム内で複数のMatrixを掛けて計算したMatrixはプログラム内のVectorを変換するのには使えますが、
シェーダーでは計算の順序が違うのでおかしなことになってしまっていると思います。
1つのMatrixをプログラム内とシェーダー内両方で使うにはどうすればよいのでしょう。
0498デフォルトの名無しさん
2012/01/16(月) 21:42:16.150499デフォルトの名無しさん
2012/01/16(月) 21:58:18.35行列を転置させる
0500デフォルトの名無しさん
2012/01/16(月) 22:17:35.700501デフォルトの名無しさん
2012/01/16(月) 22:49:01.36問題をわかってないのは君だけだと思うよ
0502デフォルトの名無しさん
2012/01/16(月) 22:53:04.820503デフォルトの名無しさん
2012/01/16(月) 23:02:01.86直交座標系で、例えばある回転行列の右からベクトルを掛けた時に
そのベクトルが時計回りに回転するように見える場合、
もし(ベクトルを転置して)左からその回転行列に掛けたならば、
逆向きに回転するように見える
同じ向きに回転するように見せるには、
その回転行列も同時に転置させなければならない
row-major か column-major かの話とはまた別だ
メモリレイアウトはそのまま使えるかも知れない(私は知らないが)
0504デフォルトの名無しさん
2012/01/16(月) 23:26:38.380505デフォルトの名無しさん
2012/01/16(月) 23:41:25.250506デフォルトの名無しさん
2012/01/16(月) 23:43:43.900507デフォルトの名無しさん
2012/01/16(月) 23:44:38.300508デフォルトの名無しさん
2012/01/16(月) 23:57:29.62>>497
> glmではMatrixをVectorの右からかけますが、GLSLでは左からかけています
行列の右からベクトルを掛けるなら、
そのベクトルは意味上は列ベクトルだ
それを同じ行列の右から掛ける為には、
意味上は行ベクトルに転置しないといけない
ここでベクトルの転置の話が出てくる
しかし、それは今回の本質的な問題ではないため、
私も(ベクトルを転置して)と括弧で括った
今回の話がベクトルではなく行列の転置の話であることは承知している
理解していただけだろうか
0509502
2012/01/17(火) 00:13:44.56glmは(497によると)行ベクトルの右に行列をかける、
なのだからあとは
glmの行列がrow-majorならそのまま配列が使える
glmの行列がcolumn-majorなら転置の必要がある
んじゃないの? 話が別ってなんで?
0510デフォルトの名無しさん
2012/01/17(火) 02:56:36.19ttp://glm.g-truc.net/code.html
mat4はcolumn-major
translate,rotateなどの機能も用意されているので
行ベクトルに右から掛けるのではなく、列ベクトルに左から掛けるほうが良いっぽい
vec3 a,b;
mat4 M;
a = b * M; だとbを行ベクトルとして計算し、
a = M * b; だとbを列ベクトルとして計算するみたい
0511デフォルトの名無しさん
2012/01/17(火) 07:42:30.01以下の2つの事は本質的に全く別の事だ
・数学的な意味でのベクトル-行列の積の順や行列の転置
・数学的な行列をたまたまメモリにシーケンシャルに配置して表現しており、
それがたまたま一方はrow-majorでもう一方はcolumn-majorであり、
同時にたまたま一方が行列に右からベクトルを掛ける表記をなぞらえており、
もう一方が行列に左からベクトルを掛ける表記をなぞらえている為に、
一方の計算をもう一方へ移植するのに行列の転置「処理」を必要とせず、
そのままのメモリレイアウトで移植可能である(かも知れない)事
簡単に言えば、数学的な計算と、
メモリレイアウトと内部処理の関係でプログラマが仕事を端折れる事、
これらは全く別だという事
だからしっかりと分けて、まずは数学的な意味での計算の仕組みを理解し、
その後でたまたま今回は仕事を端折れる(かも知れない)事を理解すべき
逆順で理解しようとすることは結局は遠回りになる
>>497 は質問文の書き方や内容、また >>500 のレスから察するに、
数学的な意味での計算の仕組みを「プログラムに落とし込める」ほどには
理解できていなかったと見える(まだ今でも理解はおぼろげだと思う)
であれば、その時点でのrow-majorなどの話は混乱の元ではないだろうか
0512デフォルトの名無しさん
2012/01/17(火) 10:38:28.55ってのはそれこそ別の話じゃん。
あんたは個々の言ってる事は正しいんだけど、話の筋がズレてるんだよ。
0513デフォルトの名無しさん
2012/01/17(火) 11:08:50.37つまり最初からGLSLに合わせた使い方すればokと。
0514497
2012/01/17(火) 11:59:38.76昨日は左から掛けたらコンパイル通らなかったんですが、いま試すとできました
何か勘違いしていたんですね
0515デフォルトの名無しさん
2012/01/17(火) 12:45:21.48> それこそ別の話じゃん
初めから別の話だと >>503 ではっきり言っている
メモリレイアウトはそのまま使えるかも知れないとも言った
行列の転置の話とも混ぜてはいない
レス内の上下でしっかりと行を分け、文脈を分けている
そして >>509 で「話が別なのは何故か」という趣旨の質問を受けた
だから >>511 で私が話は別と言った「理由」を説明した
これらが別の話だと認識しなければ理解できないからと
私が最初に話し、それに対して質問を受け、それに応えた
応答に問題があるのなら、何が問題なのかはっきりと指摘して欲しい
0517デフォルトの名無しさん
2012/01/17(火) 20:22:17.600518デフォルトの名無しさん
2012/01/17(火) 20:36:41.990519デフォルトの名無しさん
2012/01/17(火) 21:57:12.51でもあんまり必要性を感じないな
巨大な配列使わなければいいだけ
0520デフォルトの名無しさん
2012/01/17(火) 22:11:40.530521デフォルトの名無しさん
2012/01/18(水) 08:21:50.32拡張子が「glf」だったんです。
これはglfontって事ですかね?編集って出来ます?
0522デフォルトの名無しさん
2012/01/18(水) 08:51:12.16ここのアプリで作成できる
0523デフォルトの名無しさん
2012/01/18(水) 13:30:34.39ありがとうございます。
字数制限がキビシー
0524デフォルトの名無しさん
2012/01/18(水) 17:29:54.73Smoothだとグラデーションになるし、Flatだと中間で分かれないんですよね
0525デフォルトの名無しさん
2012/01/18(水) 17:30:43.790526デフォルトの名無しさん
2012/01/18(水) 17:52:28.580527デフォルトの名無しさん
2012/01/18(水) 18:14:48.37やってみます。
0528デフォルトの名無しさん
2012/01/18(水) 18:36:32.760529デフォルトの名無しさん
2012/01/22(日) 12:05:15.830530デフォルトの名無しさん
2012/01/22(日) 12:06:58.530531デフォルトの名無しさん
2012/01/22(日) 13:10:16.320532デフォルトの名無しさん
2012/01/22(日) 21:09:06.770533デフォルトの名無しさん
2012/01/23(月) 01:00:50.290534デフォルトの名無しさん
2012/01/23(月) 02:11:26.03ラジアンにしてるか?
0535デフォルトの名無しさん
2012/01/23(月) 02:19:38.49まあ、言われなくても自分で気づいてただろうが
0536デフォルトの名無しさん
2012/01/27(金) 21:54:19.080537デフォルトの名無しさん
2012/01/27(金) 21:59:23.680538デフォルトの名無しさん
2012/01/27(金) 22:05:06.250539デフォルトの名無しさん
2012/01/27(金) 22:39:13.430540デフォルトの名無しさん
2012/01/27(金) 22:47:51.06一種の憧れまで感じる
0541デフォルトの名無しさん
2012/01/28(土) 01:53:53.080542デフォルトの名無しさん
2012/01/28(土) 16:13:39.700543デフォルトの名無しさん
2012/01/28(土) 20:00:05.820544デフォルトの名無しさん
2012/01/29(日) 11:45:18.850546デフォルトの名無しさん
2012/01/29(日) 23:24:38.840547デフォルトの名無しさん
2012/01/29(日) 23:32:25.690548デフォルトの名無しさん
2012/01/29(日) 23:34:34.720549デフォルトの名無しさん
2012/01/30(月) 00:32:18.440550デフォルトの名無しさん
2012/01/30(月) 01:03:24.930551デフォルトの名無しさん
2012/01/30(月) 20:51:35.300552デフォルトの名無しさん
2012/01/30(月) 21:13:21.840553デフォルトの名無しさん
2012/01/30(月) 22:15:18.56インストールしなさい
0554デフォルトの名無しさん
2012/01/30(月) 22:31:58.19ライブラリ使用の有無だけじゃ判断つけられずOSをもう1個買うかなんかしないとロクにテストも出来なくなるからねー
0555デフォルトの名無しさん
2012/01/30(月) 22:40:49.680556デフォルトの名無しさん
2012/01/30(月) 22:46:37.10その割りには VC++ で作られた普通に動く無料アプリって多いよな
0557デフォルトの名無しさん
2012/01/30(月) 22:49:39.64おとなしくVCいれとけ
せめてMinGWかcygwin
0558デフォルトの名無しさん
2012/01/30(月) 23:09:34.14USBメモリでこっそり持ち込んで…
に最適
0559デフォルトの名無しさん
2012/01/30(月) 23:20:17.61おまえはそんな大層なプログラムを書くんか
そんなん気にするよりコーディング環境を良くして
1行で多くプログラムを書けよ
そっちのがお前さんの為になると思うよ
0560デフォルトの名無しさん
2012/01/30(月) 23:22:20.810561デフォルトの名無しさん
2012/01/30(月) 23:24:03.98確かにその通りなんだが、それだけでは >>554 の問題は解決しないような・・・
0562デフォルトの名無しさん
2012/01/30(月) 23:24:28.621行で多く→1行でも多く
0564デフォルトの名無しさん
2012/01/31(火) 00:24:30.200565デフォルトの名無しさん
2012/01/31(火) 07:44:53.770566デフォルトの名無しさん
2012/01/31(火) 21:38:17.940567デフォルトの名無しさん
2012/01/31(火) 22:49:37.98まじでお世話になったなLSI C-86試食版
0568デフォルトの名無しさん
2012/02/01(水) 00:17:16.210569デフォルトの名無しさん
2012/02/01(水) 00:18:46.840570デフォルトの名無しさん
2012/02/01(水) 00:50:48.370571デフォルトの名無しさん
2012/02/01(水) 00:55:50.970572デフォルトの名無しさん
2012/02/01(水) 02:07:25.370573デフォルトの名無しさん
2012/02/01(水) 03:17:35.57iPhone()笑
iPhone() 笑
iPhone() 笑
iPhone()
0574デフォルトの名無しさん
2012/02/01(水) 03:39:34.160575デフォルトの名無しさん
2012/02/03(金) 19:54:40.700576デフォルトの名無しさん
2012/02/04(土) 01:46:49.25あほでしょあなた。。w
0577デフォルトの名無しさん
2012/02/04(土) 10:54:06.150578デフォルトの名無しさん
2012/02/04(土) 11:13:16.10あほでしょあなた。。。。w
あほでしょあなた。。。。。。w
あほでしょあなた。。。。。。。。
0579デフォルトの名無しさん
2012/02/04(土) 13:03:09.26はぁぁぁぁ?
0580デフォルトの名無しさん
2012/02/04(土) 14:48:56.86はぁぁぁぁ? !
はぁぁぁぁ ? !
はぁぁぁぁ ?!
はぁぁぁぁ ! ?
はぁぁぁぁ!
0581デフォルトの名無しさん
2012/02/06(月) 23:05:07.660582デフォルトの名無しさん
2012/02/06(月) 23:23:23.41ウィンドウ全体のピクセルを拡大することってできる?
たとえば
■□
□□
↓
■■□□
■■□□
□□□□
□□□□
こんな感じ
0583デフォルトの名無しさん
2012/02/06(月) 23:49:45.65それかシェーダ
0584デフォルトの名無しさん
2012/02/07(火) 00:35:05.440585デフォルトの名無しさん
2012/02/07(火) 00:36:33.770586デフォルトの名無しさん
2012/02/07(火) 00:40:46.52(´c_,`o)
0587デフォルトの名無しさん
2012/02/07(火) 21:57:46.820588デフォルトの名無しさん
2012/02/07(火) 22:49:59.500589デフォルトの名無しさん
2012/02/07(火) 22:57:19.100590デフォルトの名無しさん
2012/02/07(火) 23:10:42.870591デフォルトの名無しさん
2012/02/08(水) 00:31:36.96アホたれ
0592デフォルトの名無しさん
2012/02/08(水) 00:53:23.79ソースは?
0593デフォルトの名無しさん
2012/02/08(水) 00:56:28.350594デフォルトの名無しさん
2012/02/08(水) 01:15:12.06勘違いで発言した後引くに引けなくなって言動が破綻してくいつものパターン
0595デフォルトの名無しさん
2012/02/08(水) 01:53:36.440596590
2012/02/08(水) 07:43:57.39では、もう少し詳しく説明してやる
ビューポートは、正規化デバイス座標系(NDC)での座標を
ウィンドウ座標系での座標へどう変換するかを指定するものだ
この変換をビューポート変換という
ビューポート変換は線形変換だ
従って、ウィンドウ座標系のあるピクセルとその隣のピクセルに
それぞれ変換されるNDCの座標は、それぞれ異なるはずである
しかし、仮に >>582 のやりたいことをビューポート変換で行う事を考えれば、
それはあるピクセルとその隣のピクセルにNDCの同じ座標を割り当てる事になる
だが、先ほども言ったようにビューポート変換は線形変換なので矛盾する
従って、>>582 のやりたいことをビューポート変換で実現するのは不可能である
逆にこの事から、どうすべきかは必然的に見えてくる
要するにウィンドウ座標系のある隣同士のピクセルに
それぞれ変換されるNDCの2つの座標が同じ値が示しすようにするしかない
0597590
2012/02/08(水) 07:51:17.08> 逆にこの事から、どうすべきかは必然的に見えてくる
ここの件は間違いだった
シェーダーを用いればこの件の結論は覆る
しかし、ビューポート変換では実現できないことは確かだ
0598デフォルトの名無しさん
2012/02/08(水) 08:58:54.950599デフォルトの名無しさん
2012/02/08(水) 09:19:41.90普通に考えればビューポート変えてもピクセルを拡大なんてできないわけだけど、
テクスチャを一枚表示してるだけのプログラムなら、ビューポート変えれば
「ピクセルを拡大」したように見えないこともないかもしれないし。
ていうかビューポート、ビューポート言ってる人達(達?)は、一体何を考えてるんだろうか。
一言レスとか悪態とかしか書けないあたり、具体的な策を持ってない人だろうか。
0600デフォルトの名無しさん
2012/02/08(水) 09:20:21.590601デフォルトの名無しさん
2012/02/08(水) 09:22:03.60基本からやり直せ
0602デフォルトの名無しさん
2012/02/08(水) 09:22:08.730603デフォルトの名無しさん
2012/02/08(水) 09:47:14.85ああ、なるほど、うん、大体分かった…
>>582
とりあえずですね、残念ながらあなたの説明では、あなたのやりたい事が分からないですよ。
もしウィンドウサイズ変えても描画領域が変わらなくて困ってる、あるいは絵を大きくしたいだけならglViewportだし、
582の図を愚直に解釈して本当にピクセルを拡大したいなら、別のやり方を考えないといけないし。
(582の図は2x2->4x4ですけど、例えば2x4->9x3の場合ならどうなって欲しいの?とか)
0604デフォルトの名無しさん
2012/02/08(水) 10:56:25.78描画に関する事を全てテクスチャにオフスクリーンレンダリングして
GL_NEARESTのミップマップにして後はウインドウサイズにビューポート合わせて
ウインドウサイズにテクスチャをストレッチして描画すればいいだけだろJK
0605デフォルトの名無しさん
2012/02/08(水) 11:01:53.420606デフォルトの名無しさん
2012/02/08(水) 15:58:15.970608デフォルトの名無しさん
2012/02/08(水) 20:27:13.42>>583
0609デフォルトの名無しさん
2012/02/08(水) 20:48:40.960610デフォルトの名無しさん
2012/02/08(水) 20:54:16.660611名無し
2012/02/09(木) 16:26:19.40openGLで「openGl 手抜き入門」を用いて勉強していてラジコンティーポットという課題をやっています。
まったくわからないので動かし方を教えてもらえたら嬉しいです
お願いします。
0612デフォルトの名無しさん
2012/02/09(木) 16:44:17.030613デフォルトの名無しさん
2012/02/09(木) 16:46:00.680614デフォルトの名無しさん
2012/02/09(木) 16:50:16.92「まったくわからない」じゃどこまでで来て、どこからができないのか答える方がまったくわからないので答えようがない。
もしわからないのが操作の部分ならOpenGLとは切り離して考えるべきじゃないだろうか。
0615名無し
2012/02/09(木) 17:00:19.78動かすためのプログラミングがわかりません
0616名無し
2012/02/09(木) 17:02:33.920617デフォルトの名無しさん
2012/02/09(木) 17:04:04.47具体的に分からない箇所を言ってください
0618名無し
2012/02/09(木) 17:06:24.040619デフォルトの名無しさん
2012/02/09(木) 17:06:24.640620名無し
2012/02/09(木) 17:10:20.950621デフォルトの名無しさん
2012/02/09(木) 17:13:01.000622名無し
2012/02/09(木) 17:17:02.76誰かお願いします。
ラジコンティーポットを操作できるようにしたいんです。
0623名無し
2012/02/09(木) 17:29:10.15これの課題の答え教えてください。
0624デフォルトの名無しさん
2012/02/09(木) 17:31:17.120625デフォルトの名無しさん
2012/02/09(木) 17:32:23.220626デフォルトの名無しさん
2012/02/09(木) 17:34:59.830627名無し
2012/02/09(木) 17:37:41.400628デフォルトの名無しさん
2012/02/09(木) 17:37:54.99とかでググッたら出てくるんじゃねの?とか思ったら...
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1181109876
0629デフォルトの名無しさん
2012/02/09(木) 17:39:04.070630デフォルトの名無しさん
2012/02/09(木) 17:53:26.91つうか、何にでもstatic付けるのな
そんなにインスタンス必要か
0631名無し
2012/02/09(木) 18:05:47.230632デフォルトの名無しさん
2012/02/09(木) 18:06:43.47正解は>>624
以下個人的な見解
質問の仕方から見るに、あなたはこの課題に向き合うレベルに全く達してないので
仮にこれをクリアしたとしても、すぐにまた詰みます。
課題と単位は諦めて基礎からやり直すのが宜しいでしょう。
0633デフォルトの名無しさん
2012/02/09(木) 18:57:28.34C/C++の基礎から学んでOpenGLに入門したらよろしい
0634名無し
2012/02/09(木) 19:03:58.290635デフォルトの名無しさん
2012/02/09(木) 19:07:18.020636デフォルトの名無しさん
2012/02/09(木) 19:23:50.51問題はそこではなく、これを教えたところであなたの成長を期待する事が全くできないって事です。
不良物件に時間を投資したいと思う人はいないでしょう?
0637デフォルトの名無しさん
2012/02/09(木) 19:39:56.230638デフォルトの名無しさん
2012/02/09(木) 20:31:34.090639デフォルトの名無しさん
2012/02/09(木) 20:43:56.030640デフォルトの名無しさん
2012/02/09(木) 21:39:43.360641デフォルトの名無しさん
2012/02/09(木) 22:51:25.21>>638
金払うなら仕事してもいいかも。
実装で5000円、相手するのが面倒そうなので二万円、
合計は切り上げて三万円の請求てとこだナ。
0642デフォルトの名無しさん
2012/02/09(木) 22:58:11.48高校生レベルじゃないか
0643デフォルトの名無しさん
2012/02/09(木) 23:06:42.29多分だけど、分からないのはそこじゃなくて、もっとプログラムの根本的な部分だと思う。
ティーポットを奥に向かって一定速度で動かせ。っていうのすら出来ないんじゃないかなぁ。
0644デフォルトの名無しさん
2012/02/09(木) 23:16:44.98まだいるか分からないけど、徹夜してでも頑張る気があるなら、SkypeかGoogleChatの
アカウントでも晒してくれれば、教えてあげてもいいよ。
ただし、段階を踏んで教えてあげることはできるけど、答えを教えるつもりは一切無いです。
0645デフォルトの名無しさん
2012/02/09(木) 23:28:44.690646644
2012/02/09(木) 23:58:21.400647デフォルトの名無しさん
2012/02/10(金) 00:06:23.390648デフォルトの名無しさん
2012/02/10(金) 18:23:17.19LinuxでC++でやってた通りにやった積もりなのになかなかテクスチャが張れなくてえらい苦労した。
ふと、400x400の画像を512x128の画像に替えたらあっさり。
なんてこったいw
0649デフォルトの名無しさん
2012/02/10(金) 18:52:59.040650デフォルトの名無しさん
2012/02/10(金) 19:09:53.790651デフォルトの名無しさん
2012/02/10(金) 20:17:36.670652デフォルトの名無しさん
2012/02/10(金) 20:29:59.730653デフォルトの名無しさん
2012/02/10(金) 21:42:40.700654デフォルトの名無しさん
2012/02/10(金) 21:48:18.69新しい機能だって必要に応じて使えばいいだろ。
今時はiPhoneとかでも好きなサイズのテクスチャ使えるよ。
パフォーマンス的に有利かどうかは知らんけど、
そこは目的に合わせてだよね。
0655デフォルトの名無しさん
2012/02/10(金) 22:43:49.840656デフォルトの名無しさん
2012/02/11(土) 01:06:23.530657デフォルトの名無しさん
2012/02/11(土) 02:01:58.210658デフォルトの名無しさん
2012/02/11(土) 03:40:10.890659デフォルトの名無しさん
2012/02/13(月) 13:10:05.24至近の2のn乗サイズのテクスチャ作って転送してUVで切り出すようにしてるわ
0660デフォルトの名無しさん
2012/02/13(月) 16:00:39.70ここから、モデルをアニメーションさせたりするにはどうすりゃいいんだ…。
(; ゚д゚)ぼ、ボーン?ってレベルなんだが、
なんか参考になりそうな書籍などありましたらご教示お願いいたします。
0661デフォルトの名無しさん
2012/02/13(月) 19:49:15.490662デフォルトの名無しさん
2012/02/14(火) 00:18:15.65行列またはクォータニオンなんかの頂点位置移動(回転)情報を時系列に並べた
モーションデータをまず用意して… それを読んで毎フレームごとに
再帰的にボーン情報に適用させ、各ボーンに所属する頂点位置を更新する感じ
だが、CPUでそれらを毎フレームごとに計算 (~ glMapBuffer で VertexBuffer 取り出して計算更新した後、glUnmapBuffer)
とかしてると、速度的に話にならないので、必要な情報渡してシェーダでスキンアニメーション処理書く感じ
具体的には浮動小数点フォーマットのテクスチャをデータバッファに使って渡したり、そこまで行列値の物量多く無いなら
普通に uniform で渡したりしつつ、 attribute で各頂点ごとに所属する(ボーン)行列インデクスとか渡して、
シェーダ側で計算して描画。 みたいな。
…そんな具体的な方法よりも、もっと手前の基本的な処理や話なら、マルペケその他の初心者向け記事をどうぞ
0663デフォルトの名無しさん
2012/02/14(火) 11:18:05.390664デフォルトの名無しさん
2012/02/14(火) 12:46:52.40ありがとう。だいたいどういったものなのかイメージする事が出来た。
手順は…
1.モデルデータにボーンを何らかのツール上でモデルに仕込む
(ボーンは移動計算の元となる頂点・線分で、モデルの各頂点に対して関連付けられる)
2.ツール上でモーションデータを作成し、プログラム側で読む
(モーションデータはボーンがどう移動(回転)したかという情報を時系列順に並べたもので、扱いやすいように行列/クォータニオンの形で持つ)
3.ボーンに関連付けられたモデルの頂点に対して、ボーンが移動した分だけ頂点を移動
(ボーンは親子関係が存在するから、親が動いたら子に関連付けられた頂点も操作→再帰でやる)
4.頂点バッファに突っ込んでレンダリング
(ただしバッファの転送を毎フレーム行うのは速度的に遅いので、GPU側に処理をお願いする方法がある)
シェーダは…すまん、まだ触った事なくてちょっと解らない。
せっかく説明してくれたのに申し訳ない。
基本的な知識もだいぶ足り無そうだから、お勧めされたサイトのマルペケで
DirectX周りの説明で基礎知識を掻い摘みつつ、実装してみるよ!
とても解りやすいアドバイス、ありがとうございました。
0665662
2012/02/14(火) 13:05:11.27多分わかってるとは思うけど、念のためフォローしておくと、
>1.モデルデータにボーンを何らかのツール上でモデルに仕込む
>(ボーンは移動計算の元となる頂点・線分で、モデルの各頂点に対して関連付けられる)
実際には「ボーン」って言うのは、OpenGLの世界の話じゃなくて 「私がこうしたいから用意した、自前の情報」 なので
『ボーンデータを仕込む』 と言うより、『そのつもりの情報を、用意する』 って感じ
で、俗にボーンと呼ばれる物の正体は、移動計算の元にする物ではあるけど、それは頂点や線分じゃなくて、
主には位置と回転行列(細かい事言うと、それは1要素当たりfloatが16個並ぶ行列であったり、4個並ぶクォータニオンだったり)するだけ。
自分の計算方法次第だけど、あと、そのボーン座標空間上での原点から、次の節までの距離なんかも持たす事もあるかもしれないが
で、メッシュの各頂点への関連付けってのは、自分で 「これはこれ、あれはそれ」 のように関連付け "た" 形で用意する。
考え方のもっと細かい所は、キリが無いから上で出てるサイトでもなんでも見たほうがいいが、
大枠として簡単に言うなら、「ボーンの移動量に合わせて頂点を移動させる」 と言うより、「ボーンローカル座標空間を、回転させる」 感じ
それが再帰的に連なると。 以上スレチ気味御免
0666デフォルトの名無しさん
2012/02/14(火) 14:12:50.36値が同じなら、glGenTexturesで渡したアドレスと同じでなくてもいいんだね
int tex1 = 0;
glGenTextures(1, &tex1);
(中略)
int tex2 = tex1;
glDeleteTextures(1, &tex2);
これで普通に解放されてて驚いた
今までクラス間でポインタのバケツリレーやってたわ・・・
0667デフォルトの名無しさん
2012/02/14(火) 14:23:08.630668デフォルトの名無しさん
2012/02/14(火) 14:40:32.300669デフォルトの名無しさん
2012/02/14(火) 14:44:25.650670デフォルトの名無しさん
2012/02/14(火) 14:48:09.230671デフォルトの名無しさん
2012/02/14(火) 14:52:08.860672デフォルトの名無しさん
2012/02/14(火) 15:07:25.970673デフォルトの名無しさん
2012/02/14(火) 15:14:23.200674デフォルトの名無しさん
2012/02/14(火) 15:15:35.500675デフォルトの名無しさん
2012/02/14(火) 15:17:14.16glGenTextures が、アドレス受け取って書き戻しをしてるから、
対応する関数の glDeleteTextures でも、同じシグネチャにしてみた… って所じゃね。多分だけど
0676デフォルトの名無しさん
2012/02/14(火) 15:36:37.620677デフォルトの名無しさん
2012/02/14(火) 15:38:38.730678660
2012/02/14(火) 16:05:52.47(; ゚д゚)お、おk。
ボーン周りというのは飽くまで、ツール上でそういう扱いや見え方してるけど
実体は、アニメーションしたいから付けた付加情報とかタグとかみたいなもので
ボーンと各頂点の関連付けについても同様で、そういうデータを自分で用意するんですよという事か。
それで、ツール上で書き込んだ論理的なボーンとかその関連付けを
自分のプログラムで読み込んだとき、
計算しやすいような持ち方にして持ちましょうということか。
OpenGLというより、スキンメッシュの概論みたいな相談になってしまって申し訳ありません。
アドバイス、ありがとうございました。
0679デフォルトの名無しさん
2012/02/14(火) 16:21:58.900680デフォルトの名無しさん
2012/02/14(火) 16:44:45.960681デフォルトの名無しさん
2012/02/14(火) 22:50:34.500682デフォルトの名無しさん
2012/02/14(火) 22:52:31.680683デフォルトの名無しさん
2012/02/15(水) 00:56:25.77配列単体のことは言ってないよ
0684デフォルトの名無しさん
2012/02/15(水) 01:01:47.870685590
2012/02/15(水) 07:13:25.930686デフォルトの名無しさん
2012/02/15(水) 18:56:11.21全て要件が違うだろ
0687デフォルトの名無しさん
2012/02/15(水) 22:14:39.27ポインタ=変数のアドレスを格納している変数
構造体=いろいろな型の変数、ポインタ、あるいは構造体を複数、含める事のできる機構
最近では関数も含める事ができるしコンストラクタ等もあって、ほとんどクラスみたくなってる
0688590
2012/02/15(水) 22:35:41.38そこに、1バイト〜64バイトのひとつの枠をあてがうのが間接演算子(*)によるアクセス
1バイト〜64バイトの1種類の小枠が複数並んだ枠をあてがうのが配列によるアクセス
1バイト〜64バイトの複数種類の小枠を任意に並べた枠をあてがうのが構造体によるアクセス
0689デフォルトの名無しさん
2012/02/15(水) 22:44:23.34算術・論理演算は!&の構文糖衣理論並みの発言
0690デフォルトの名無しさん
2012/02/16(木) 16:05:46.180691デフォルトの名無しさん
2012/02/16(木) 18:38:45.800692デフォルトの名無しさん
2012/02/16(木) 18:49:52.870693デフォルトの名無しさん
2012/02/16(木) 19:40:00.900694デフォルトの名無しさん
2012/02/16(木) 23:28:44.30GLSLシェーダコードに置いた、attribute 変数に対して、CPU側、glVertexAttribPointer で頂点ごとに変化する内容を渡そうと
任意配列を対応付け、glDrawArrays …ではなく、glDrawElements で描画させようとしています。
ここで疑問。 果たして、「VertexShaderにやってくる配列要素の順序は、何順になるのか」 です。
単純に頂点配列を一直線に並べて glDrawArrays する分には、結果的に頂点の順序でやってくるだろうと思うのですが、
glDrawElements …つまり、頂点インデクスの配列で渡した場合、シェーダに来る順序は、
1.それでも実際の頂点配列の順
2.インデクス配列の順
どちらになるでしょうか…。
0695デフォルトの名無しさん
2012/02/16(木) 23:36:38.940696694
2012/02/16(木) 23:39:58.29A B
□ A,B,C,D の4頂点がある四角形を描画しようとして、
C D
単純に頂点配列で A,D,C,A,B,C と6つ並べた配列に対して、
例えば attribute を、値[0],値[1],値[2],値[3],値[4],値[5] のような配列で渡せば、
B の頂点が VertexShader に来る時、そこでは 値[4] の値が参照出来る、のはわかるのですが、
これを、
. 0, 1, 2, 3
頂点データ: A,B,C,D / 頂点インデクス: 0,3,2,0,1,3 と並べて、
attribute に、値[0],値[1],値[2],値[3],( 値[4],値[5] ) のような配列で渡した時、
VertexShader で参照出来る attribute の順番は、「頂点順」 か、または 「インデクス順」 なのか、と言う話です。
0697デフォルトの名無しさん
2012/02/16(木) 23:40:20.910698694
2012/02/16(木) 23:41:39.09え? 頂点ごとに異なる内容を渡すのに attribute を使うので、
むしろ 「どの順序で来るのか」 がはっきりしないと、意味が無いかと
0699694
2012/02/16(木) 23:44:54.660700デフォルトの名無しさん
2012/02/16(木) 23:50:04.980701デフォルトの名無しさん
2012/02/16(木) 23:53:39.28>>696の場合、
インデックス:0,3,2,0,1,3
頂点:A,D,C,A,B,D
属性:値[0],値[3],値[2],値[0],値[1],値[2]
こうなる。
ちなみに頂点座標も属性の一つだぞ
0702694
2012/02/16(木) 23:57:12.66ありがとうございます! つまり、
頂点データ: A,B,C,D ([0]〜[3]) / 頂点インデクス: 0,3,2,0,1,3 ([0]〜[5])
とある場合、それは glDrawArrays だろうが glDrawElements だろうが、
やってくる順序は、[0]〜[3] になると言う事ですね!
つまりこの例で言えば、attribute に対応付ける配列要素は、値[0],値[1],値[2],値[3] のみで、
そして VertexShader にやってくる順序は、 値[0], 値[3], 値[2], 値[0], 値[1], 値[3] になると。
確かに言われて見れば、CustomVertex の仕様を考えてみても、それが自然に思えてきました。
ありがとうございました。
0703694
2012/02/17(金) 00:00:29.53>>701 ありがとうございます! 納得出来ました。
>ちなみに頂点座標も属性の一つだぞ
確かに、おっしゃる通りだと思います。要は 「頂点も、色も、その他も」 配列にして全て
シェーダにブチ込んでしまって、それらについて描画する、と言う状態を想像すると、
とても晴れやかです。 ありがとうございました
0704デフォルトの名無しさん
2012/02/17(金) 00:16:46.402.6 Primitives and Vertices
から
2.8 Vertex Arrays
まで読み直したほうがいいと思う。
GPUには複数のVertex Shaderがあって
複数の頂点が同時にVSで処理される。
OpenGLは基本的に1頂点に頂点属性が一つに纏められる。
Objファイルだと一つの三角形に位置、法線、UVに対して別々のインデックスを指定できるけど
(glBeginのような古い機能を使わない限り)OpenGLだとそれができないのだ。
0705デフォルトの名無しさん
2012/02/17(金) 00:31:40.570706デフォルトの名無しさん
2012/02/17(金) 01:05:35.440707デフォルトの名無しさん
2012/02/17(金) 02:44:50.46全 ペ ー ジ
を読んだほうがいいと思う
0708デフォルトの名無しさん
2012/02/17(金) 17:18:10.93説明書みたいなブラックボックスはいらん
0709デフォルトの名無しさん
2012/02/20(月) 16:06:09.25それって64ビットアプリじゃなくて32ビットアプリで
64ビットOSでも実行できるってだけじゃないんですか?
0710デフォルトの名無しさん
2012/02/20(月) 16:43:29.26何言ってんだ?
と思ってダウンロードしてみたけど、32ビットも64ビットも両方入ってたよ
0711デフォルトの名無しさん
2012/02/20(月) 17:04:23.34mingwのほうです。
0712デフォルトの名無しさん
2012/02/20(月) 17:16:36.34みつからないなら自分でソースからビルドしたら?
0713デフォルトの名無しさん
2012/02/20(月) 17:19:51.89みんな自分でビルドしているならそうします。
0714デフォルトの名無しさん
2012/02/20(月) 19:32:51.22後で見つかったら、それから差し替えるかどうか検討すればいい
0715デフォルトの名無しさん
2012/02/21(火) 00:16:35.670716デフォルトの名無しさん
2012/02/21(火) 00:44:21.120717デフォルトの名無しさん
2012/02/21(火) 01:21:29.860718デフォルトの名無しさん
2012/02/21(火) 02:02:37.87おい。 MinGW に含まれるコンパイラって、名前通り GCC じゃないのか
0719デフォルトの名無しさん
2012/02/21(火) 13:31:34.360720デフォルトの名無しさん
2012/02/21(火) 22:06:53.120721デフォルトの名無しさん
2012/02/22(水) 00:22:58.79実際MinGWなんて久しく触ってない
0722デフォルトの名無しさん
2012/02/22(水) 01:23:03.600723デフォルトの名無しさん
2012/02/22(水) 03:55:41.790724デフォルトの名無しさん
2012/02/22(水) 10:07:01.410725デフォルトの名無しさん
2012/02/22(水) 12:17:23.540726デフォルトの名無しさん
2012/02/22(水) 17:44:39.140727デフォルトの名無しさん
2012/02/22(水) 20:13:13.64煽るなら煽るなりにもっとクオリティを追求して欲しい
0728デフォルトの名無しさん
2012/02/23(木) 09:30:24.21普通は最適化が-O2だけど-O3にしてコンパイルしました。。
語尾に32の付いたライブラリーをリンクしたのが気になるけれど
よく分からないんで放置しておきました。
0729デフォルトの名無しさん
2012/02/25(土) 08:29:44.97コンパイル通るんですけど。
libopengl32.aなんて名前のファイルをパソコンの中を検索してもひとつも
見つかりませんでした。opengl32で検索してもそれらしきファイルは見つかりませんでした。
-lopengl32は一体どういう意味なのか教えてください。
0730デフォルトの名無しさん
2012/02/25(土) 09:02:39.660731デフォルトの名無しさん
2012/02/25(土) 09:28:49.85opengl32.dllならありますが
これは関係ないでしょう。
0732デフォルトの名無しさん
2012/02/25(土) 10:46:31.800733デフォルトの名無しさん
2012/02/25(土) 11:11:24.73ありがとうございました。
0734デフォルトの名無しさん
2012/02/25(土) 16:41:25.38>>730>>32は適当さんだから信じちゃだめ
0735デフォルトの名無しさん
2012/02/25(土) 17:24:55.16dynamicライブラリとstaticライブラリの違いくらい勉強してからレスしましょう
0736デフォルトの名無しさん
2012/02/25(土) 17:26:09.45動的リンクならdllからlib作れるけど静的リンクなら無理だね
本当にリンクできているんなら探し方が悪いんだろう
0737デフォルトの名無しさん
2012/02/26(日) 10:58:05.580738デフォルトの名無しさん
2012/02/26(日) 14:22:36.00(☆1)と(☆2)の各頂点をGL_LINESでむずびたいのですが
glTranslate/glRotate/glScaleする前後のglutSolidCubeの各頂点の座標を得るにはどうすればよいでしょうか
前後のどちらか片方はわかるんですが両方得るためには自前で行列演算しないとだめですか?
0739デフォルトの名無しさん
2012/02/26(日) 14:33:59.56> 前後のどちらか片方はわかる
なぜ?
0740デフォルトの名無しさん
2012/02/26(日) 14:52:59.26例えば☆2でglutSolidCube(1.0f);とすれば
(-0.5, -0.5, -0.5)〜(0.5, 0.5, 0.5)を対角とした立方体として描画されますよね?
ここで☆1から☆2の各頂点への線分を引きたい場合は☆1の頂点座標をどうにかして得てGL_LINESすればよいです。
逆に☆1描画時にGL_LINESする場合も☆1の座標は固定でわかりますので☆2の各頂点座標をどうにかして得れば
頂点間の線分を描画することはできます。
「このどうにかして」という部分はOpenGL抜きで考えれば自前でアフィン変換をすれば得ることは可能ですが
OpenGLレイヤで簡単に取得することが可能であればそれを知りたいんです。
0741デフォルトの名無しさん
2012/02/26(日) 15:06:59.79そういう意味でしたか
> 前後のどちらか片方はわかるんですが両方得るためには
「得る」というのが、OpenGL の何らかの関数を使って得ることができている
という意味だと解釈してました
だから、どうやって得ることができているのか、
なぜそれが両方ではできないのか不思議だったんですが、
「glutSolidCube の仕様上、値が分かる」という意味だったんですね
もの凄く不快な思いをさせてしまったような気がします
ごめんなさい
もう消えます
OpenGLの仕様書 ver2.1のChapter6を読み直せばOK
0743デフォルトの名無しさん
2012/02/26(日) 15:09:21.100744デフォルトの名無しさん
2012/02/26(日) 15:20:10.23すみません煽りかと思って過剰反応してしまいました…
消えないでください…
0745デフォルトの名無しさん
2012/02/26(日) 15:38:14.38Chapter6というとStateのところだと思うんですけどやはりGetFloatv等でモデルビュー行列を
取得して自分で何とかするしかないということであってますか?
>>743
プロジェクション行列までは考えなくても済むような気はします
0746デフォルトの名無しさん
2012/02/26(日) 16:37:13.48OpenGLの古典機能だけしか使わないのなら
モデルビュー行列を取得してラインの終点(☆2の頂点)を
自分で計算するのが一番楽だと思う。
glmのようなベクトル・行列ライブラリを使えばそんなに苦労はしないと思うし。
Vertex Shader使ってもいいのなら、他の方法もいろいろ考えられるけど。
ちゃんと自分の納豆できる手法を教えて欲しいのなら
どういう状況でプログラムを作っているのか具体的に書くべきだと思う。
(俗に言う5W2H)
・どうやってプログラムを作るか?
少ない手間で実装したいor実行速度優先
・どのversionのOpenGLが使えるのか?
古いグラボでも動かしたいかなど
・なんの為に開発しているのか
学校の宿題
女子校生にOpenGLを教えるための教材開発
国プロ
メガデモを作って海外のデモパーティで発表する
0747デフォルトの名無しさん
2012/02/26(日) 17:07:30.270748デフォルトの名無しさん
2012/02/26(日) 17:46:19.87簡単なサンプルプログラムを作れる程度の機能しかないので
真面目に書き始めたらglLoadMatrix以外は忘れて
別途ベクトル・行列演算ライブラリを使うべき
○○はできるんですか?どうやるんですか?とか悩んでる時間がもったいない
0749デフォルトの名無しさん
2012/02/27(月) 18:06:05.55ふと思ったがOpenGLの行列演算系命令って速度的にはどうなん?
0750デフォルトの名無しさん
2012/02/27(月) 22:48:47.26常識的に考えればSSEくらいは使ってくれてるんじゃないかな
CPUで計算するわけだし特別速かったりはしないだろう
0751デフォルトの名無しさん
2012/02/28(火) 00:50:19.28標準のは有り得ないでしょ
0752デフォルトの名無しさん
2012/02/28(火) 09:23:44.64glLoadMatrixって逆行列の計算で遅くならんかね。
計測してないけど。
0753デフォルトの名無しさん
2012/02/28(火) 12:28:38.070754660
2012/02/28(火) 13:02:36.45亀ですが…
( ´∀`)おかげさまで↓の動画のように実装できました。
本当にありがとうございました。
ttp://ichigo-up.com/cgi/up/qqq/nm48833.mp4
0755デフォルトの名無しさん
2012/02/28(火) 16:09:18.13ありがとうございます。
openglではなく、libopenglで検索したら見つかりました。
先頭文字からの検索だったみたいです。
0756デフォルトの名無しさん
2012/02/28(火) 16:53:03.930757546
2012/02/28(火) 22:23:48.08みなさんありがとうございました。
0758デフォルトの名無しさん
2012/02/29(水) 00:13:46.90glLoadMatrixを使うと逆行列が計算されて重いってことになるんだったら
行列演算系の命令だって変わらないかそれ以上に重くなるはずじゃないか?
実際のところどっちにしろ本当に必要になるまで逆行列は計算されない
シェーダでgl_NormalMatrixとか使ってれば描画時に一度計算されるだけだろうし
その場合はglLoadMatrixを使ったかglRotateしか使ってないかは関係なく逆行列を計算するだろうね
0759デフォルトの名無しさん
2012/02/29(水) 00:34:33.39でもScale,Rotate,Translateは逆行列が簡単に生成できるでしょ?計算するまでもないっていうか。
いやGLの内部で実際どんな処理がされてるかは知らんけどさ。
まぁLoadMatrixにしても、4行目が0,0,0,1なら逆行列の計算も軽いだろうけど。
0760デフォルトの名無しさん
2012/02/29(水) 06:09:54.470761デフォルトの名無しさん
2012/02/29(水) 22:00:23.900762デフォルトの名無しさん
2012/02/29(水) 22:36:54.530763デフォルトの名無しさん
2012/03/03(土) 20:59:43.51古いゲームやろうとしたら起動出来なくて
スレみたら古いOpenGLのサポートが打ち切られてるからじゃないか
みたいな話しが出てたんですが
古いOpenGLがサポートされていないグラボでもゲーム起動出来るようになるような
そんな魔法のおまじないはありますか?
それとも古いグラボ買ったりするしかないんでしょうか
0764デフォルトの名無しさん
2012/03/03(土) 21:14:24.04馬鹿ですね
0765デフォルトの名無しさん
2012/03/03(土) 21:22:41.800766デフォルトの名無しさん
2012/03/03(土) 22:32:28.53手間を省くために知りたい部分だけ具体的にして出して
解決案を求めたつもりだったのですが逆効果だったようですね
あまりスレ上の常識やお約束的なものを知らないもので
スレ汚しすいませんでした
0767デフォルトの名無しさん
2012/03/03(土) 22:55:40.45そういう事じゃなくて
少なくともゲームで遊ぶ事を語る板でスレを探すべきだろ
ここはプログラム板なんだがな
0768デフォルトの名無しさん
2012/03/03(土) 22:57:14.15フォームの中だとこういうもんなのか?
GameWindowってのもあるみたいだけど
60fps出したいならこっち使えってことかね
0769デフォルトの名無しさん
2012/03/04(日) 05:11:11.10さすがOpenGL
0770デフォルトの名無しさん
2012/03/04(日) 13:23:45.61vsyncの意味理解してないだろ
0771デフォルトの名無しさん
2012/03/04(日) 13:28:40.14女『車のエンジンがかからないの…』
男『あらら?バッテリーかな?ライトは点く?』
女『昨日まではちゃんと動いてたのに。なんでいきなり動かなくなっちゃうんだろう。』
男『トラブルって怖いよね。で、バッテリーかどうか知りたいんだけどライトは点く?』
女『今日は○○まで行かなきゃならないから車使えないと困るのに』
男『それは困ったね。どう?ライトは点く?』
女『前に乗ってた車はこんな事無かったのに。こんなのに買い替えなきゃよかった。』
男『…ライトは点く?点かない?』
女『○時に約束だからまだ時間あるけどこのままじゃ困る。』
男『そうだね。で、ライトはどうかな?点くかな?』
女『え?ごめんよく聞こえなかった』
男『あ、えーと、、ライトは点くかな?』
女『何で?』
男『あ、えーと、エンジン掛からないんだよね?バッテリーがあがってるかも知れないから』
女『何の?』
男『え?』
女『ん?』
男『車のバッテリーがあがってるかどうか知りたいから、ライト点けてみてくれないかな?』
女『別にいいけど。でもバッテリーあがってたらライト点かないよね?』
男『いや、だから。それを知りたいからライト点けてみて欲しいんだけど。』
女『もしかしてちょっと怒ってる?』
男『大丈夫だから。怒ってないから。大丈夫、大丈夫だから』
女『何が大丈夫なの?』
男『バッテリーの話だったよね?』
女『車でしょ?』
男『ああそう車の話だった』
女『ちゃんと聞いてる?』
男『要するに車のエンジンが掛からないんでしょ?』
女『なんでそんな偉そうなの?』
0772デフォルトの名無しさん
2012/03/04(日) 15:14:06.50いやぁ、何度見てもイラっとするコピペだw
論理的な思考ができる女とじゃないと結婚はできん
0773デフォルトの名無しさん
2012/03/04(日) 15:16:46.220774デフォルトの名無しさん
2012/03/04(日) 15:18:16.620775デフォルトの名無しさん
2012/03/04(日) 15:20:20.52PC再起動したら60fps出るようになったわ
0776デフォルトの名無しさん
2012/03/04(日) 15:21:49.22自分の要求を遠回しに言って察してもらおうとする
典型的な女思考の女はめんどくさくて嫌いだから
0777デフォルトの名無しさん
2012/03/04(日) 15:25:52.34論理的思考ができないやつは、男、女に関係なく話にならんだろうw
0778デフォルトの名無しさん
2012/03/04(日) 15:29:29.410779デフォルトの名無しさん
2012/03/04(日) 15:33:32.21うんwww
0780デフォルトの名無しさん
2012/03/04(日) 15:34:01.330781デフォルトの名無しさん
2012/03/04(日) 15:36:15.07どこが?w
むしろ逆にききたいねw
0782デフォルトの名無しさん
2012/03/04(日) 15:39:33.930783デフォルトの名無しさん
2012/03/04(日) 15:42:23.390784デフォルトの名無しさん
2012/03/04(日) 16:15:31.140785デフォルトの名無しさん
2012/03/04(日) 16:17:01.370786デフォルトの名無しさん
2012/03/04(日) 16:25:59.010787デフォルトの名無しさん
2012/03/04(日) 19:13:09.93C#はXNAがありますし、JavaやObjective-CもAndroidやMacがありますよね?
0788デフォルトの名無しさん
2012/03/04(日) 19:42:15.030789デフォルトの名無しさん
2012/03/04(日) 21:56:42.04言語とミドルウェアとハードウェアぐらいの区別は
出来るようになった方がいいんじゃないかと思った。
0790デフォルトの名無しさん
2012/03/05(月) 11:05:45.250791デフォルトの名無しさん
2012/03/05(月) 19:36:10.62質問したらなんか煽られて答えて貰えそうにないし
大人な対応してさようならって感じ
まぁ、正しい判断だったと思うわ
0792デフォルトの名無しさん
2012/03/05(月) 19:37:59.670793デフォルトの名無しさん
2012/03/09(金) 22:02:59.660794デフォルトの名無しさん
2012/03/09(金) 23:46:51.73https://github.com/id-Software/DOOM-3
0795デフォルトの名無しさん
2012/03/09(金) 23:48:24.920796デフォルトの名無しさん
2012/03/10(土) 00:56:58.030797デフォルトの名無しさん
2012/03/11(日) 18:49:17.610798デフォルトの名無しさん
2012/03/12(月) 20:15:54.47「DLL 'opengl32.dll' の 'glGenBuffers' というエントリ ポイントが見つかりません。」
というエラーが出るんですが、どうすればいいのでしょうか。
32bitだと正常に動きます。
GLSharpを使ってC#で開発しています。
0799デフォルトの名無しさん
2012/03/12(月) 20:20:49.03プラットフォームをAny CPUとかじゃなくてx86にする。
たぶん。
0800デフォルトの名無しさん
2012/03/12(月) 20:21:08.9764ビット版のDLLを使うか、exeのビルドターゲットを32ビット (x86) にしないといけない
0801デフォルトの名無しさん
2012/03/12(月) 20:40:54.07レスありがとうございます。
ビルドターゲットをx64にしていました。
x86にしようと思います。
0802デフォルトの名無しさん
2012/03/12(月) 23:54:44.88GLSharpがx86なんじゃないの
0803デフォルトの名無しさん
2012/03/13(火) 11:27:51.96デフォルトがx86になってるんだがな
0804デフォルトの名無しさん
2012/03/16(金) 22:27:54.770805デフォルトの名無しさん
2012/03/16(金) 23:27:26.120806デフォルトの名無しさん
2012/03/17(土) 00:57:58.690807デフォルトの名無しさん
2012/03/17(土) 01:42:04.340808デフォルトの名無しさん
2012/03/17(土) 05:19:34.550809デフォルトの名無しさん
2012/03/17(土) 17:00:20.500810デフォルトの名無しさん
2012/03/17(土) 17:07:41.590811デフォルトの名無しさん
2012/03/17(土) 17:45:38.740812デフォルトの名無しさん
2012/03/17(土) 17:59:06.470813デフォルトの名無しさん
2012/03/17(土) 17:59:58.580814デフォルトの名無しさん
2012/03/18(日) 03:02:18.37メモリリークしまくってて笑え・・・ない・・・
デバイス関連の注意点のまとめとか無いもんかね
0815デフォルトの名無しさん
2012/03/18(日) 09:59:46.00お、ちょっとどういうケースなのか詳しく
0816デフォルトの名無しさん
2012/03/18(日) 10:20:13.930817デフォルトの名無しさん
2012/03/18(日) 10:29:41.32ちょっとでもリークすると笑えない別PCに持ってっただけとか
0818814
2012/03/18(日) 11:15:46.23メインのRadeonや知り合いのGeforceでは問題無かったけど
Corei5積んだサブPCのIntelHDだとリークしちゃうみたいで
エラーチェックには引っかかってないようだったけど
とりあえずシェーダ使わないようにしたらリーク解消されたってとこ
具体的なところはよく分からない
0819デフォルトの名無しさん
2012/03/18(日) 12:12:51.62よく分かってないのは怖いな
なんか分かったら教えてくれ
0820デフォルトの名無しさん
2012/03/18(日) 23:52:33.315年前のIntel GMA950なノートに持っていくとテクスチャの色がおかしくなった
gl
0821デフォルトの名無しさん
2012/03/18(日) 23:55:45.47S3TCテクスチャ圧縮の強制をONにしたら正しく動作するようになった
ttp://www.intel.com/jp/support/graphics/sb/cs-030506.htm
メモリが足りなかったんだろうな
そんな大量にテクスチャを使ってるわけじゃないので納得できんが
0822デフォルトの名無しさん
2012/03/19(月) 01:42:41.09メインメモリーがリークしてたんだよね?
0823デフォルトの名無しさん
2012/03/21(水) 13:59:23.14やりたいんだけどOpenGLじゃそんなことできませんよね?
0824デフォルトの名無しさん
2012/03/21(水) 14:06:11.560825デフォルトの名無しさん
2012/03/21(水) 14:37:34.530826デフォルトの名無しさん
2012/03/21(水) 15:44:34.72不動小数点なんて言う非標準の型でなく、きちんと浮動小数点数の型を使えばいいと思うの。
0827デフォルトの名無しさん
2012/03/21(水) 16:14:14.15できるよ
0828デフォルトの名無しさん
2012/03/21(水) 21:15:18.820829デフォルトの名無しさん
2012/03/21(水) 21:37:27.78エスパーわろた
0830デフォルトの名無しさん
2012/03/21(水) 22:04:19.10フラグメントシェーダで今のフラグメントのスクリーン位置を取得して
目的の位置ではなかったらdiscard;って書けばOK&OK
0831デフォルトの名無しさん
2012/03/21(水) 23:31:52.26w
0832デフォルトの名無しさん
2012/03/22(木) 00:04:49.46glTranslatef (0.375, 0.375, 0.);
これだな。
0833デフォルトの名無しさん
2012/03/22(木) 09:01:56.170834デフォルトの名無しさん
2012/03/22(木) 09:08:25.99きりのいい数値だと微妙にズレる!
0.5 でもやっぱ駄目だ! 畜生!
その半分 0.25 引いてみるか? 微妙に駄目じゃん!
そのまた半分 0.125 足してみる!
ずれないぜ! やったよカーチャン!
って感じなのかね?
ところで Direct3D だと 0.5 なの? これ
0835デフォルトの名無しさん
2012/03/22(木) 10:02:34.15ぐぐったらこんなMSDNが
http://msdn.microsoft.com/en-us/library/windows/desktop/bb172357(v=vs.85).aspx
0836デフォルトの名無しさん
2012/03/22(木) 11:31:41.98wglでいうwglShareListsのようなテスクチャの継承は、
どうやって行えば良いのでしょうか。
0837デフォルトの名無しさん
2012/03/22(木) 23:08:45.720838デフォルトの名無しさん
2012/03/22(木) 23:11:04.96eglCreateContextの第3引数に共有したいContextをぶっ込むとか
0839デフォルトの名無しさん
2012/03/23(金) 01:39:20.73ttp://news.mynavi.jp/special/2012/kepler/004.html
0840デフォルトの名無しさん
2012/03/23(金) 11:48:46.31出来ました! こんな単純な方法だったんですね…。
教えて頂き、ありがとうございました。
0841デフォルトの名無しさん
2012/03/23(金) 21:34:02.49互換性の GeForce とスピードの Radeon か
0842デフォルトの名無しさん
2012/03/24(土) 04:35:10.43Geforce 8800GT で鼻歌歌ってポリポリしている俺は
0843デフォルトの名無しさん
2012/03/24(土) 06:25:31.60ついこの前まで俺もそんな感じだったわ
ボードがまるコゲになって交換したけど(´;ω;`)
0844デフォルトの名無しさん
2012/03/24(土) 10:07:06.33だっせーwww
俺でさえ9600GTだぜw
0845デフォルトの名無しさん
2012/03/24(土) 10:16:34.430846デフォルトの名無しさん
2012/03/24(土) 10:19:05.880847デフォルトの名無しさん
2012/03/24(土) 10:37:52.77え・・・そうなん・・・・orz
0848デフォルトの名無しさん
2012/03/24(土) 10:50:42.960849デフォルトの名無しさん
2012/03/24(土) 16:17:14.05ここまで差があると8800GTとあまりかわらないんじゃね?
0850デフォルトの名無しさん
2012/03/24(土) 23:36:59.83学習に時間かかりそう
0851デフォルトの名無しさん
2012/03/25(日) 00:30:35.350852デフォルトの名無しさん
2012/03/25(日) 12:53:31.84今は(b-a)/c*現在のフレーム数で移動していますがわざわざ変数を使わないでやりたいです
0853デフォルトの名無しさん
2012/03/25(日) 13:00:02.240854デフォルトの名無しさん
2012/03/25(日) 14:10:46.040855デフォルトの名無しさん
2012/03/25(日) 14:13:24.40drawbitmapに該当するものす。
命令名のヒント下さい。
0856デフォルトの名無しさん
2012/03/25(日) 14:24:44.45どういう事がしたいのかな?
0857デフォルトの名無しさん
2012/03/25(日) 14:30:12.45そのbitmapの変更も高速にできないものかと思ったので。
0858デフォルトの名無しさん
2012/03/25(日) 15:00:07.450859デフォルトの名無しさん
2012/03/25(日) 15:03:49.40裏画面の書き換え(ビットマップイメージのコピー)です。
0860デフォルトの名無しさん
2012/03/25(日) 16:24:08.300861デフォルトの名無しさん
2012/03/25(日) 22:05:26.42画像Aの画像の色、alphaで画像Bの形にするにはどうしたらいいでしょうか
イメージとしてはこんな感じですhttp://i.imgur.com/Ng7dd.png
0862デフォルトの名無しさん
2012/03/25(日) 22:30:05.200863デフォルトの名無しさん
2012/03/26(月) 11:14:35.42( ゚д゚)イメージのURL先が403Forbiddenになってて見れないぞ?
0864デフォルトの名無しさん
2012/03/26(月) 11:39:14.68そんなことない
0865デフォルトの名無しさん
2012/03/26(月) 12:00:21.630866デフォルトの名無しさん
2012/03/26(月) 18:12:58.040867デフォルトの名無しさん
2012/03/26(月) 19:42:37.60画像Aと画像Bをブレンドさせたいのか
画像AのRGBと画像Aのalphaで画像Bを表示させたいのか
なんにせよシェーダー使えば簡単
0868デフォルトの名無しさん
2012/03/26(月) 22:47:31.42昔のプログラマーなら AND と XOR 使うだろ。
抜き色って言うんだよ。
0869デフォルトの名無しさん
2012/03/26(月) 22:57:29.77スプライトも知らんのだろうな
0870861
2012/03/26(月) 23:04:45.86ググりましたが
簡単にはできないんですね
Blendfancみたいな感じで出来るかと思ってました
0871デフォルトの名無しさん
2012/03/26(月) 23:05:53.37今のプログラマもシェーダー使わず AND と XOR でやれという意味?
って言うか、昔のプログラマが AND と XOR 使ってたことと、
今シェーダーを勧めることに何か関係があるの?
昔のプログラマーなら・・・ってのは、どうでもよくないか?
0873デフォルトの名無しさん
2012/03/26(月) 23:06:47.87だからそのシェーダの中で、AND/XOR すればいいだろっての
シェーダって、なんだと思ってるんだよw
0874デフォルトの名無しさん
2012/03/26(月) 23:08:07.05今ならシェーダー使った方が速い
ま、そんな時代もあったんだよ
0875デフォルトの名無しさん
2012/03/26(月) 23:08:23.56OpenGLは定まったテクスチャを描くのはいいようですが
自由なbitmapを描く時は毎回 for で数値化してテクスチャ作ってから描画するので
かえって時間がかかるということになるんでしょうか?
0876デフォルトの名無しさん
2012/03/26(月) 23:12:59.630877デフォルトの名無しさん
2012/03/26(月) 23:13:20.880878デフォルトの名無しさん
2012/03/26(月) 23:15:14.30テクスチャそのものに直接オフスクリーンレンダリングすればよし。
0879デフォルトの名無しさん
2012/03/26(月) 23:19:21.72表示のビットマップからテクスチャ生成するソースでこういうのを見たので
public Texture makeTexture(Bitmap bitmap) {
…
//画像データの生成
ByteBuffer bb=ByteBuffer.allocateDirect(size*size*4);
bb.order(ByteOrder.BIG_ENDIAN);
IntBuffer ib=bb.asIntBuffer();
for (int y=result.getHeight()-1;y>-1;y--) {
for (int x=0;x<result.getWidth();x++) {
int pix=result.getPixel(x,result.getHeight()-y-1);
int alpha=((pix>>24)&0xFF);
int red =((pix>>16)&0xFF);
int green=((pix>>8)&0xFF);
int blue =((pix)&0xFF);
ib.put((red<<24)+(green<<16)+(blue<<8)+alpha);
}
}
…
>>878
テクスチャそのものに直接描画できるわけですか。
0880デフォルトの名無しさん
2012/03/26(月) 23:24:29.91エスパーすると、
「画像ファイルなどをロードして、それをテクスチャを使うのはいいようですが(?)、
メモリ空間にビットマップ領域を確保して、そこに計算で描き込んだ内容をテクスチャとして利用すると
かえって時間がかかるという事になるんでしょうか?」
って聞いてる予感がするが、それ、OpenGL 固有の話じゃない。
>>878
多分、BITMAPと言う画像フォーマットの話じゃなくて、
メモリ上の画像領域(=ビットマップ)の事だと思う。 ※用語がわからなくても、Win32API などで、DIB や DDB 扱った事あればわかると思う
0881デフォルトの名無しさん
2012/03/26(月) 23:25:35.74まずそもそも、コンピュータ上で、画像ってどうそういうデータ、どう扱われる物かは、
わかってるよな?
0882デフォルトの名無しさん
2012/03/26(月) 23:26:51.390883デフォルトの名無しさん
2012/03/26(月) 23:31:10.51おおよそそうです。
surfaceviewと自由な内容のbitmap使ってやってたことをOpenGLに置き換えたいのですが
>>879のソース見てかえって遅くなると思ったもので。
0884デフォルトの名無しさん
2012/03/26(月) 23:33:55.61>自由なbitmapを描く時は毎回 for で数値化してテクスチャ作ってから描画するので
>for で数値化してテクスチャ作って
この作ったテクスチャが
>定まったテクスチャ
だと思うが?
なんでテクスチャを毎回作り直す必要があるんだ?
0885デフォルトの名無しさん
2012/03/26(月) 23:35:56.07bitmapの内容が毎フレーム変わるからです。
2Dで使ってます。
0886デフォルトの名無しさん
2012/03/26(月) 23:41:55.46解決
0887デフォルトの名無しさん
2012/03/26(月) 23:46:06.90bitmapもということでしょうか?
そてれともテクスチャの内容を(別の描画方法で)自由にできるということですか?
0888デフォルトの名無しさん
2012/03/26(月) 23:56:22.89何か問題ある?
0889デフォルトの名無しさん
2012/03/27(火) 00:00:31.07その結果を使って最終的な絵を出すのは割と一般的な手法だと思うんだが
0890デフォルトの名無しさん
2012/03/27(火) 00:07:37.03テクスチャにレンダリング方法を調べてみます。
どうもありがとうございます。
0891デフォルトの名無しさん
2012/03/27(火) 00:12:42.71フラグメントシェーダで描けばよろし
0892デフォルトの名無しさん
2012/03/27(火) 00:17:08.32どうも、調べてみます。
0893デフォルトの名無しさん
2012/03/27(火) 00:18:45.88ちなみに、根本的な話だけど、例え OpenGL 経由で描画しようがなんだろうが、
自由に生成する内容をテクスチャに書くとしても、結局同じような処理するだけだから、
そこを勘違いしないように
例えば DIBの 先頭ピクセルからループで処理するのと、
テクスチャの 先頭ピクセルからループで処理するのと、
同じような事をしたいなら、結局経由が違うだけで同じ処理するよ。考えてみればわかる事だが
そして、何かのライブラリで簡単に1行で書けるとしても、裏では同じ事してるので、
それはそういう物。 そこだけ曖昧に、勘違いしないように
0894デフォルトの名無しさん
2012/03/27(火) 00:20:37.48JavaやC#でそのレイヤの処理は、元々向いてないので遅くなっても当たり前
0895デフォルトの名無しさん
2012/03/27(火) 01:00:30.70なら単に1枚のテクスチャをアルファ反転で描画したいってことか
黒いところは描画して白い部分は透明
glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
0896デフォルトの名無しさん
2012/03/27(火) 07:20:31.45せっかく良い題材なんだから、練習がてらシェーダーを学ぶ事を勧める
0897デフォルトの名無しさん
2012/03/27(火) 07:38:48.100898デフォルトの名無しさん
2012/03/27(火) 07:49:17.57望む処理速度が出るかどうかは、シェーダーの組み方と、
どのくらいを望んでいるかに依るから何とも言えない
それと、イメージでものを語るな
実際に自分で動かしてみるか、実際に動かした事例を見なさい
0899デフォルトの名無しさん
2012/03/27(火) 08:21:47.85未だにシェーダーを使ったことがない私が通りますよ。
0900デフォルトの名無しさん
2012/03/27(火) 08:54:36.95シェーダーでないと書けない処理ってでてこんな…。
固定機能一掃しちゃったDirect3Dならともかく、OpenGLは残したわけだし。
まぁ暗号みたいなステート操作まみれのコード書くのは嫌だから、俺はシェーダー使うけど…。
0901デフォルトの名無しさん
2012/03/27(火) 10:36:05.540902デフォルトの名無しさん
2012/03/27(火) 14:24:38.21WebGLだけど、シェーダはGLでもESでもだいたいそのまま動くんじゃないかしら。ソース汚いですけど。
あと、こんなのも
http://sourceforge.jp/projects/javie/devel/
0903デフォルトの名無しさん
2012/03/27(火) 22:54:13.72ttp://edv.sakura.ne.jp/mmd/20111107/
0904デフォルトの名無しさん
2012/03/28(水) 00:20:15.22段階的に知識養うってことを知らなすぎる・・・・
0905デフォルトの名無しさん
2012/03/28(水) 00:51:24.730906デフォルトの名無しさん
2012/03/28(水) 00:53:42.550907デフォルトの名無しさん
2012/03/28(水) 00:57:04.430908デフォルトの名無しさん
2012/03/28(水) 01:40:25.850909デフォルトの名無しさん
2012/03/28(水) 01:48:59.540910デフォルトの名無しさん
2012/03/28(水) 02:05:45.950911デフォルトの名無しさん
2012/03/28(水) 02:08:47.640912デフォルトの名無しさん
2012/03/28(水) 02:42:10.68その区別を出来ないか、言い訳に利用する人が多いってこと
0913デフォルトの名無しさん
2012/03/28(水) 02:59:57.14気に食わなかったらスルーしたり、からかったりすればいいんじゃない
0914デフォルトの名無しさん
2012/03/28(水) 09:30:22.82不思議仕様を含んだブラックボックススパゲッティの話を
一緒にするのはやめようぜ
0915デフォルトの名無しさん
2012/03/28(水) 13:18:31.130916デフォルトの名無しさん
2012/03/28(水) 14:46:52.270917デフォルトの名無しさん
2012/03/28(水) 19:09:54.180918デフォルトの名無しさん
2012/03/28(水) 20:56:29.49遊びにも使えるよ
0919デフォルトの名無しさん
2012/03/28(水) 23:15:51.930920デフォルトの名無しさん
2012/03/28(水) 23:16:25.560921営利利用に関するLR審議中@詳細は自治スレへ
2012/03/29(木) 23:38:21.60OpenGL でオフスクリーンレンダリングを行う要件があるんですが、動作コストの面で、
win32のDCを頼りにする wgl系の手法(wglCreateContext&wglMakeCurrent)と、
OpenGL オフィシャル(拡張)である、framebuffer/renderbuffer を用いる方法と、どちらが手続き内でコストが低いでしょうか
もしも、ライブラリ手続きの面でそれほどコスト差が無く、顕著に現れるのはそれ以外の自前コードだ、と言う場合
出来ればオフィシャルで行きたいと思っています。よろしくお願いします。
0922営利利用に関するLR審議中@詳細は自治スレへ
2012/03/29(木) 23:46:40.62ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20050923
0923営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 01:08:44.02それはだから framebuffer の例です
0924営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 01:24:26.74どっちかが使い物にならないくらい遅いとかは聞いたこと無いが
気になるなら両方作って比較してみたらいいかと。
0925営利利用に関するLR審議中@詳細は自治スレへ
2012/03/30(金) 04:54:14.24動作コスト云々の前に、まず目的によって使い分けが生じると思うんだけど。
0926営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 07:43:52.54Radeon HD 6990 より 6950 の方が良い結果が出る世の中。
0927営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 14:53:45.970928営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 19:38:39.220929営利利用に関するLR審議中@詳細は自治スレへ
2012/04/01(日) 20:17:52.740930営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 02:31:25.43無印OpenGLでも3.0以降コアから外された。(ARB_compatibilityで残ってはいるけど)
glPushAttribの方は高価だから元々避けるべきとされてる。
なんで、どのみちステートマネージャは作らなきゃいけない。
0931営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 14:34:40.62これ考えた人バカですか?
0932営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 15:05:58.37それを解説してあるいいHPないでしょうか?
0933営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 21:15:28.32glTexCoord2でコピー元の座標を指定して後は普通にコピー先テクスチャに
オフスクリーンレンダリングすればいいだけだろ
0934営利利用に関するLR審議中@詳細は自治スレへ
2012/04/02(月) 23:06:20.52ありがとです
そうなんですか はふぅ・・
0935営利利用に関するLR審議中@詳細は自治スレへ
2012/04/03(火) 10:00:55.97できるんですね。わかりました調べてみます。
0936営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 14:58:57.80えらく難しいと思ってる自分は賢いのかいw
0937営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 18:22:39.10生成したスレッドの最初に eglCreateContext の第3引数に
共有したいContextを入れてeglMakeCurrentしたのです。
これがGoogleのangleprojectではちゃんとレンダリングされたのですが、
QualcommのAdreno SDKやARMのOpenGL ES Emulatorでは上手くいきませんでした。
そもそもangleprojectで確認してたのが悪かったのですが、
レンダリング出来るようにするにはどうしたらいいでしょうか。
0938営利利用に関するLR審議中@詳細は自治スレへ
2012/04/05(木) 22:36:32.47一般的にはその方法で問題ないはず。
実装毎に上手くいかない場合にどうすればいいかはメーカに聞くしかないんじゃないかな。
あとエミュレータは細かいところまで実装されてない場合があるのであまり信用せずに実機で確認してくれ。
0939営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:38:01.10「実例で学ぶゲーム3D数学」
OPEN GLで卒論制作するつもりで、数学的なところを
勉強したいんですけど、上の本わかりやすいですか?
結構数学苦手なので、困ってるんですけど…
何か他にもよさげな本があれば紹介お願いします。
0940営利利用に関するLR審議中@詳細は自治スレへ
2012/04/06(金) 23:59:05.090941営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 07:48:45.04高校〜大学の数学物理力学等の教科書は結構役に立った
0942営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 10:10:57.15Windows Vista 32bit、ATI Radeon HD 4850でGLSL のビット演算はできた
同じPCでWindows 7 64bitをデュアルブートしてドライバを確認するとHD 4800になっていて
ビット演算がサポートされていない模様
(シェーダのコンパイルは通るが入力に関係なく0が返ってきている)
ラデオンのHDバージョンがオペレーティングシステムによって変わって見えるものなの?
GLSLで確実にビット演算をさせる方法はある?
ちなみに後者は#extension GL_EXT_gpu_shader4 : enableも試してみたが駄目
0943営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 11:11:03.870944営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 13:15:04.48PC触れるようになったら確認してみます
0945営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 15:14:05.08>>941
939です。
レスありがとうです。関係している本買います。
0946営利利用に関するLR審議中@詳細は自治スレへ
2012/04/07(土) 17:29:18.94そんな馬鹿冗長な物ウザいだけだと、公式と証明羅列して、そこに補足入るくらいがシンプルでわかりやすい、って人もいるので
「何がわかりやすいか」 なんて、自分で読んでみないで他人に感想聞いた所で、正解なんてわからない
いや普通の話。
0947942
2012/04/08(日) 14:52:29.800948営利利用に関するLR審議中@詳細は自治スレへ
2012/04/08(日) 19:30:03.680949営利利用に関するLR審議中@詳細は自治スレへ
2012/04/09(月) 04:34:03.11お答えくださり、ありがとうございます。
なるほど、間違ってはいないはずですか。
まずはエミュでGL環境を整えてから実機で試そうとしてたので、
実際に実機で確認出来るようになったらまた色々と探ってみます。
0950営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 12:44:27.70別々のシェーダーと言っても一部共通する部分があります
イメージとしてはこんな感じです(フラグメントシェーダー)
モデルX : 計算a + 計算b
モデルY : 計算a’ + 計算b
計算bはどちらのシェーダーにも共通する計算なのですが、
この様な場合でも二つのシェーダーのソースのどちらにも
同じ計算bを書く必要があるのでしょうか
0951営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 20:02:00.330952営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 21:19:43.29複数置かれることも普通にあり得るということですか
非常に無駄な感じがしますが、仕方ないのですね
これは仕方ないとして、せめてシェーダーのソースコード上では、
このようなコピペを回避する手段は何か無いのでしょうか
機能毎にモジュールに分けておいたソースをロードしてコンパイルし、
リンカがそれをひとつのシェーダーにリンクするとか
0953営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 21:54:27.310954営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 21:56:11.950955営利利用に関するLR審議中@詳細は自治スレへ
2012/04/10(火) 22:44:57.45私の >>952 へのレスですよね
VRAM上に全く同じ命令データが複数置かれることはないという意味でしょうか
それとも、コピペを回避する手段は無いといういみでしょうか
あるいは両方でしょうか
0956営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 00:18:15.31関数は全部展開されていた。
OpenGL4だと関数呼び出しができるらしいけど詳しくは知らん
0957営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 00:24:45.2611で動的リンカっぽい機能ついたけど使われてんだろか…。
マァ同じ命令データが複数置かれるといっても、画像に比べたら無いに等しいし、パフォーマンスへの影響の方がでかい。
とりあえずOpenGLでコード分割するには、#includeを自前で実装して、コンパイル前に展開するしかない。
異種バージョン間とか考えるとかなりめんどくさそうだが、
単純に文字列展開するだけで済ますならそんな難しいもんでもないよ。
0958営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 00:26:16.65共通に使われる関数を複数のGLSLのコードに自動的に配置するような処理が必要になる。
そこでオススメなのがboost::waveだ!
waveはC言語で使われるプリプロッサを実装したものだが
waveに付属の以下のサンプルはGLSLのコードを処理できるようになっている。
wave\samples\custom_directives
このサンプルコードを使えばヘッダファイルに共通処理を書いて
#include "common.glsl"
みたいな事がGLSLでできるようになる。
ちょっと話は変わるが、最近Revisionという大きなデモパーティが開催された。
http://revision-party.net/
ここで作品をダウンロード可能
http://pouet.net/party.php?which=1550&when=2012
ここのスレのみんなはメガデモに興味ないかい?
0959営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 00:35:48.280960営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 02:30:55.14横からだけど、boost::wave とかノーマークだった。
これいい。素敵。ありがとう
0961営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 07:20:20.95自分のマシンで使える OpenGL が 3.1 までなので、
GLSL の機能だけでコピペを回避するのは諦めざるを得ませんね
>>958
すいません、質問には関係ないと思って開発言語は伏せていました
Haskell でプログラムしてます
プログラムソース内で(所謂シェーダーツリーみたいに)
グラフでシェーダーを組み立てられる仕組みを作って、
それでコピペを回避する方向でがんばってみます
0962営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 14:29:21.760963営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 16:50:26.920964営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 18:56:56.63コピペ自体は簡単にできますが、コピペ元を変更した場合、
全てのコピペ先を同様に変更しなければならず、
その時に変更漏れしてしまう可能性があります
そういう事を防ぐのが、いろんなプログラム言語で実現されている
モジュール化機能の役割の一つだと学んできたので、
GLSL には少しショックでした
0965営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 19:17:41.750966営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 19:24:21.06実行時にコンパイルします
0967営利利用に関するLR審議中@詳細は自治スレへ
2012/04/11(水) 20:05:53.39後追いのくせに細かいところは結構gdgdだよなぁ
0968デフォルトの名無しさん
2012/04/11(水) 22:16:19.780969デフォルトの名無しさん
2012/04/11(水) 22:46:20.160970デフォルトの名無しさん
2012/04/11(水) 22:56:47.370971デフォルトの名無しさん
2012/04/12(木) 10:19:41.02attribute変数の定数として渡すのと、どう使いわけたらいいんでしょうか。
投影行列みたいなのはuniform変数が使われているサンプルをよく見かける
のですが、頂点ごとの計算に使うような定数は、attribute変数の定数として
渡した方がいいんでしょうか。 今一使い分けがわかりません。よろおねm(_ _)m
0972デフォルトの名無しさん
2012/04/12(木) 21:57:12.16レンダリングコンテキストAがカレントの時に VBO を作り、
頂点データをVRAMに転送します
別のレンダリングコンテキストBがカレントの時に別の VBO を作り、
先ほどと全く同じ頂点データをVRAMに転送します
これで2つの全く同じ頂点データを元にして、
同じ3Dモデルを別々のウィンドウに別々の角度で表示したりできるのですが、
この場合、VRAMには2つの全く同じデータがダブって入ってる事になりますよね
これではあまりに無駄なのですが、
頂点データをVRMA内で共有する方法は無いでしょうか
wglShareLists などはディスプレイリストは共有するけど、
VBO は共有できないような気がするのですが、共有できるのでしょうか
[環境]
OpenGL 3.1
0973デフォルトの名無しさん
2012/04/12(木) 22:15:42.70「wglShareLists VBO」でググるとできそうな感じだけど、ダメだった?
0974デフォルトの名無しさん
2012/04/12(木) 22:29:08.40いえ、開発言語がHaskellなのでwglShareListsそのものを試す環境にはないのですが、
Haskellで GTK + OpenGL の組み合わせを提供するライブラリに、
他のレンダリングコンテキストとリソースを共有するレンダリングコンテキストを作る関数があって、
それで試したところ上手くできなかったので、もっと根本的に別のやり方があるのかと思いました
同じようにレンダリングコンテキスト同士のリソースを共有するwglShareListsでできるのでしたら、
Haskellの方でもできると思うので、関数の使い方に問題があるのかもしれません
理屈では可能なのですね、もう少し考えてみます
ありがとうございました
0975デフォルトの名無しさん
2012/04/12(木) 23:07:47.230976デフォルトの名無しさん
2012/04/12(木) 23:37:43.03レスありがとうございます。attributeが頂点ごとのデータというのは理解しています。
自分が聞きたかったのは、glVertexAttribPointerではなくて、glVertexAttribで指定する変数の方です。
これは全頂点で同じ値になりますよね。これと、glUniform〜 で指定する変数との使いわけについてです。
説明が紛らわしくてすみません。
0977デフォルトの名無しさん
2012/04/12(木) 23:45:58.38それはglVertexとglVertexPointerと同じような関係じゃない?
つまり実用的にはglVertexAttribはあまり使わないんじゃ。
まぁ人によると思うが。
0978デフォルトの名無しさん
2012/04/12(木) 23:54:27.30あそうなんですか。
例えば頂点の色を全部同じにしたい時は、glUniform〜じゃなくて、glVertexAttribで指定する
ものなのかなと思ったりしたんたですが。
そういう場合でも、glUniform〜で渡してやる方が一般的なんですかね。
0979デフォルトの名無しさん
2012/04/13(金) 11:27:58.63glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE);
のGLUT_SINGLEとは何ですか
0980デフォルトの名無しさん
2012/04/13(金) 11:31:34.15つまりダブルバッファを使わないということ
0981979
2012/04/13(金) 11:48:19.26ダブルバッファを読んだらよくわかりました
ありがとう
レス数が950を超えています。1000を超えると書き込みができなくなります。