勝手にオススメライブラリ:
TriMesh2 :
-
http://gfx.cs.princeton.edu/proj/trimesh2/ - モデラーから出力した綺麗なデータを描画したい時に使う
- 主要なファイルフォーマットが読めて使い方もファイル名を指定してreadするだけ
TriStripper :
- トライアングル・ストリップ化ライブラリ
- メッシュからストリップを作りたい時に使う
- NvTristipより高速でモダン
今勉強中なんだけどリッチなGUIを持ったOpenGLプログラムを作りたいならQTがよさそう。 OpenGL使わなくてもC++のGUIライブラリとしては定番な感じかな。 これからはglutより新しいglfw, sfmlあたりがいいんでないだろうか。 日本語の情報は少ないかもしれいが。
Qtと組み合わせて使うには どのライブラリがいいの?
SFMLははじめて知った。なかなかいけてる。 OpenGLで使えるライブラリとかテクニックとかまとめたWikiが欲しいね。 自分専用で作る気でいるけど、誰でも書き込めるようにしたほうがいいのだろうか。
SFMLが一番近いのはSDLだな。Qtも近縁。 SFMLは日本語情報がまったくないのが欠点だろう。 個人的にはSDLを使うならSFMLを使いたい。作りがSDLは古臭すぎる。
SDLって初期化に時間がかかり過ぎるんだよな ただ、それだけの理由で使わなくなった
シェーダー使ってる人は自分で書くんだと思うんですが perspective division(クリップ座標→正規化デバイス座標の変換。wで割る作業)は 普通、どのタイミングで行われるのですか? webにはglFrustumやglOrthoで変換されると書いてあるページもあるものの opengl.orgのリファレンスを読む限りカメラ座標→クリップ座標への変換しか やっていないように見えます
どのタイミングというかクリップ座標 --> 正規化デバイス座標の変換の時だが。 本によってはクリップ座標と正規化デバイス座標がごっちゃになっていたり無くなっているのでよく混乱する。
ありがとうございます。えっとその場合、どのapiがやってるかわかりますでしょうか? (すみません、自分の質問がおかしかったです) ローカル/ワールド/カメラはGL_MODELVIEW_MATRIX (gluLookAt+glTranslatef他) カメラ→クリップはGL_PROJECTION_MATRIX (glOrthoやglFrustum) クリップ→正規化デバイス ? 正規化デバイス→デバイスはglViewport。行列不使用
どれもAPIで変換してるわけじゃない。グラフィックス パイプラインで調べてみ
w=1/zなので固定シェーダーならGPUが自動で計算して適応する(のでAPIはない)。 シェーダー使うとwの出力に何でも代入できたはず。
>>14 >>16 CCからNDCへの変換は、「x,y,zをwで割る操作である」と決められてるので
それらを制御するAPIはありませんよ。
ちなみにプログラマブルシェーダの場合、バーテックスシェーダの出力gl_Positionは
クリップ座標であるべしと決められてるので、シェーダでは変換しないです。
どのタイミングで変換されるのか・・・はよく分からんけど、クリッピングが終わって
ラスタライザでトライアングルセットアップされる直前あたりじゃないかなぁ。
Rubyバカにしてる子ってさ 変数に$ついてる言語触ってるって事だよね いちいちSHIFT+4キーおして $ 打ちまくってる感触はどう? ゴッミゴミだな
GoとPython使ってる俺はかなりのマイノリティ
たいして使えてないくせに
すいません
すっげームカツクこういう奴(
>>23 )を完膚無きまでに
ぐぅの音もでないまでに打ちのめすにはどうすればいい?
そういうやつを気にするまでもないくらいに能力を上げる
∩___∩
| ノ ヽ/⌒) ♪ ぐぅ
/⌒) (゚) (゚) | .| ぐぅ
/ / ( _●_) ミ/ ぐぅ ♪
.( ヽ |∪| / ぐぅ ぐぅ
\ ヽノ / ぐぅ ぐぅ ぐぅ
/
>>23 / ぐぅ ぐぅ
| / ぐぅ ぐぅ ぐぅ ぐぅ
| /\ \ ぐぅ ♪
| / ) )
∪ ( \
\_)
その分野で超有名なオープンソースを作って、これの作者ですが何か?、が一番カッコいい気がする
そもそもすごい奴は、いちいちそんな見栄をはったりしない
30 :
デフォルトの名無しさん :2011/07/03(日) 23:42:03.76
>>25 お互いに相手も知らないし、実際の程度も知らないし、何も知らない状態で
言ってるだけだから普通はスルー
まともな人間は
>>23 みたいなこと言わない
大抵が何やってもうまくいかずいつもボロクソ言われてるから
せめてネットでは、と
>>23 みたいな発言するもんだ
気にすることないよ
∩___∩
| ノ ヽ/⌒) ♪ ぐぅ
/⌒) (゚) (゚) | .| ぐぅ
/ / ( _●_) ミ/ ぐぅ ♪
.( ヽ |∪| / ぐぅ ぐぅ
\ ヽノ / ぐぅ ぐぅ ぐぅ
/
>>23 / ぐぅ ぐぅ
| / ぐぅ ぐぅ ぐぅ ぐぅ
| /\ \ ぐぅ ♪
| / ) )
∪ ( \
\_)
OpenGLの話をして下さい><;
>>34 OpenGLで
>>33 のスキニングアニメーションをやりたいです
サウンドはOpenALでぐぅぐぅ♪です
>>35 それは、いっしょにやりませんか、というお誘いか?
それとも、何か質問があるのか?
前者なら断る
後者なら、今何ができて何ができないか、質問は何か、ちゃんと言いなさい
そんなこと言わずになんとかお願いしますよぉ
それは人にものを頼む態度ではない
それは人にものを頼まれる態度ではない
それなら、そんな人にものを頼むなよ
頼む方だけでなく、頼まれる方にも非がある。
どのような非があるのか?
例えば満員電車で裸の女性が股間を濡らしていたとしよう
出もの腫れもの処嫌わずぢゃ
つまり、全てがオープンなGirL が居たと言う事ですね。 さ、とっとと OpenGL の話しに戻すんだお前らwwwwwwwwww
∨∨ <<<<<<<< つまり、全てがオープンなGirL が居たと言う事ですね。 >>>>>>>>(キリッ! ∧∧∧∧∧∧∧∧(キリッきリッッ!!!キリッッキリッッッ ∨∨ <<<<<< さ、とっとと OpenGL の話しに戻すんだお前らwwwwwwwwww >>>>>>(キリッッッ!!!キリッッッッ!キリッッッッキリキリッ!!!!
珍獣がこのスレに来ていると聞いて
このコテハン「天使 ◆uL5esZLBSE」は天才チンパンジー「アイちゃん」が 言語訓練のために使用しているハンドルです。 アイと研究員とのやり取りに利用する書き込みなので、 関係者以外はレスしないで下さい。 京都大学霊長類研究所
うるせー、ばか。 京都大学霊長類研究所が何様だよ。 命令すんじゃねーよ!
もしかしてWin7では glutReshapeWindowは無効なんですか? どこで呼び出してもウィンドウサイズに 変化がみられません ちなみに glutInitWindowSizeはうまくいきます
win7でも正常に動作します
>>51 ありがとうございます
機能的にWin7でも動くということなので
他の何が原因なのか探ってみます
openGLで8,16,32bit par channel,で ARGB順でglReadPixelする方法はありますか?
openGLの標準のアンチエイリアス機能って色も黒くしちゃうのね・・・ それとも回避する方法ある(´・ω・`)?
は?
GL_POLYGON_SMOOTH GL_MULTISAMPLE どっちでもポリゴンのアルファだけじゃなく色もアンチエイリアスの影響で値が小さくなるから 黒くなるんだよ
GL_NICEST
アンチエイリアスなんてビデオカードの設定次第だろ
うん、俺の環境ではなんかイマイチなままなようだよ 話し聞いてくれてありがろん
いいってことよ
>>53 OpenGL specificationの"4.3 Reading and Copying Pixels"を読んで見たら?
>>54 OpenGL specificationの"3.3 Antialiasing"を読んで見たら?
62 :
デフォルトの名無しさん :2011/07/08(金) 09:59:25.14
AndroidのOpenGLESで開発をしております。 ダウンロードした画像リソースとアプリ内に持っている(resファイル配下) 画像リソースとで組み合わせてアルファブレンドを行っていますが、 うまくブレンドされず、後に描画した画像で塗りつぶされてしまいます。 原因がわかる方いらっしゃいましたら、ご教示頂けませんでしょうか
エスパーするとアルファブレンドできてない。 理由はいろいろ考えられるので自分で調べろ。
TriStripper 知らなんだ。 もう数年まともにいじってないからのう。
そういやさ、ストリップ長って長ければ長いほどいいの? TriStripperは16ぐらいで短いストリップを敷き詰めたほうが バーテックスキャッシュのヒット率が上がっていい、 みたいな事が書いてあるけど。
キムヨナは愛されキャラだね。 ファンばかりでなく、アンチからも愛されるという稀有な存在。
ウホ、誤爆
68 :
デフォルトの名無しさん :2011/07/12(火) 02:32:35.38
レーザーレンジセンサで距離データを取り込んで、表示させているんですが、点を軌跡のように描きたいです。 glClear(GL_COLOR_BUFFER_BIT)を書かなければ描画が蓄積されると思ったのですが、windowはぐちゃぐちゃになって表示できません。 どうしたらよいでしょうか?
ゴミが残ってるとか? 最初だけ glClear() 実行しても駄目?
ダブルバッファと言う言葉の意味を調べてみなされ
>>68 ダブルバッファを使わない
glClear()は1度はする
ジオメトリシェーダ使おうと思ったら glGetUniformLocationで-1返るようになった。
関数がお前の意志に反応したのか。
>>72 シェーダでuniform変数を定義しててもそれをシェーダ内で使用していなければ
そのuniform変数は無かったことにされ、glGetUniformLocationは-1を返す。
そこんとこ大丈夫?
OpenGL specificationのOpenGL Operation->Vertex Shaders->Uniform Variables
の所を読み返すのだ。
お前らやたらOpenGLに詳しいけど普段から使ってんの? ゲーム製作とか?
メール書くときにOpenGL必須だろ?常考
不覚にもワロタ
ビジネスの最前線でOpenGLを活用したまったく新しいそるーしょんを提案しています。
俺は今までGeforceでOpenGLプログラムを開発し、よくnvidiaのサイトに行って開発者向けツール情報を読んだりしていた。 しかし最近AMDのGPUの方がコストパフォーマンスがいいらし ノートPCでもRadeonを載せたものが多いようだ。 だが、ATIのGPUでOpenGLプログラミングするのはどうなんだろうか。 AMDの技術関係のスライドの殆どはOpenGLではなくDirect3Dをベースに説明していたり Geforceで作ったプログラムがRadeonで動かないというのはよく聞くが 逆はあまり聞かないような気がする。 AMDはDirect3Dひいきで、OpenGLのサポートはしかっりしていないような気がするが ATIのGPUを最後に使ったは7年ぐらい前になるのではっきりした事はわからない。 もしRadeonでOpenGLプログラミングの経験のある方がいれば御意見を伺いたい。
逆だね NVIDIAドライバのOpenGL実装が、優秀すぎると言うか、ゆるすぎる GLの規格外の実装していても大抵は動いてくれる そんで、ATI(Radeon)ドライバの場合は OpenGLの規格に厳密すぎて、ちょっと規格から外れる実装(例えばFBOを作って使う部分とか) しようものなら、すぐにハングって感じ まあ、それで英語のGL仕様規格を翻訳しながら読む癖がついたって言えば良い事なのか?w
gDEBuggerがOpenCLのおまけっぽいとはいえAMDから出たしOpenGLサポートが弱いってのは実際あまり感じないな 意外とOpenGL関係のツールも充実してる NVIDIAの方が拡張に熱心だから最新機能は使いやすいが AMDも最新標準まで早いうちにサポートしてるし 今時はNVIDIAの方がOpenGLにはいいってこともなさそうだな
そういや(AMDの)gDEBuggerって誰か使った? フリー化されたりAMDに買われた(?)り迷走感が凄い。 昔のgDEBuggerはうちでは動かなかったが、AMD版なら動くかもしれない
>>75 スマフォブームでOpenGLが再び脚光を浴びたの知らないのか
Windows 以外は OpenGL だからなあ
Windowsでも使える死ね
死ねはやめようよ
使えるしねに変換が入ったとかそんなとこだろ アスペかお前ら
普通は書き込む前に読み返す
このなかにマジレスがいます
あjl;gじゃ@おvふじこ。
藻舞らここは2ちゃんなんだから五時脱字暗いそんな敏感になんなYO
93 :
デフォルトの名無しさん :2011/07/14(木) 10:26:18.35
プログラム板などはわざと誤字などを入れる風習が見られない 真面目な話をしてる時は空気を読め
いろんなスレで自論を押し付けるようなレスすんのヤメレ
いろんなスレで君は注意されてるのかい? 迷惑な人なんですね。
どうでもいいん蛇ね
PBO使いたいんだけどWindowsだからOpenGL1.1までしかサポートしてなくて、 調べたらglew使えって書いてあったんで導入してみたんだけど glewだとGL_PIXEL_UNPACK_BUFFER,がなくてGL_PIXEL_UNPACK_BUFFER_EXT とかになってるんだけど、 GL_PIXEL_UNPACK_BUFFER=GL_PIXEL_UNPACK_BUFFER_EXTって考えておけ?
正式なやつのプロトタイプ作ったり実験したりするのに手軽にOpenGLするLL言語って何がいい?
ちょっとアニメネタの台詞書いただけでこんなに荒れると思わなかった
>>86 であった。
>>97 多分同じ定数じゃないかな?
>>98 むしろあなたがどのLLを使えるのかが大切なような。
ちなみにPerlはGLUT/OpenGL使うのが超簡単だった。
Ioも楽だったと思う。Gaucheとかもすぐ使えるんじゃね。
言語的に相性よくても 拡張でもないのにあのapiだけ呼べない、あの定数がないとかあるからなー
glslでstatic使えるんだけど 何の意味あんの?
staticはキーワードとして予約はされてるだけで使えないことになってる コンパイラによっては通すかもしんないけど意味ないんじゃね
メタセコイアで作ったモデルをOpenGLで表示すると一部「抜けてない」ところができるんだけど、 完全に透明なピクセル(α=0)を書き込んだらZバッファーって更新される? どうもメタセコイアだと更新されなくて、OpenGLだと更新されている気がする。 手前の透明ピクセルを書いてから、後ろのピクセルを書くとZで落とされる....
アルファテストしなければα=0でも書き込む
他人が書いた処理だとこう表示されるが、 自分で書いた処理だとこう表示される、どうして?って話か
106 :
103 :2011/07/16(土) 10:57:59.05
「ある程度は妥協する」って前スレで誰かが言ってた
それよりこのモデルデータさんをうpだ!
>>106 この欠け方は確かに気になる。直したくなる
Zバッファの精度が足りてるかが気になる
左足の方はちゃんと抜けてるみたいだし、 矢印の先端から下(少しだけ左)の部分に数ピクセル描かれてる部分があるから、 αテストはちゃんとできてるんじゃないのかなぁ。 他の問題もあるのかも、って気もする。 別の角度からの画像とかは無いですか?
アニメーション付きとか適当なフォーマットで持たされても困りますし
なんだ、自前のプログラムの話じゃなかったのね。 だったら「OpenGLで表示すると」じゃなくて「そのレンダラで表示すると」の話になっちゃうから 何とも言えないというか、どうしようもないというか。
つまり、モデルもソフトも全て借り物の、ただのエンドユーザが、 OpenGLでプログラミングを行っているスレに、質問しにきた訳ですね。 もう無視でいんじゃね
そこまで冷たくしようとは思わないけどw なんで?と聞かれても、HIさんに聞いてくださいとしか言えないよね。 とりあえず・・・ >完全に透明なピクセル(α=0)を書き込んだらZバッファーって更新される? これはYES。 >αテストで落ちていればZには描かれない=上の画像ではαテストが行われてない >という理解でOK? これもYES。ただ、112で指摘した数ピクセルの件が気になるっちゃ気になる。 まぁでも、113で結論は出たっぽいので、いいのかな。
HI社っていったらあれしかない
gluLookAtのcenterとgluPerspectiveのnearの関係ってどうなってるの? centerがnearとfarの中心になるように死体咳が縮尺されるってことですか?
>>122 まったく関係のない機能を並べて
疑問を投げられても。
>>122 gluLookAt の center は、eye から見てその方向を見るってだけで、(center - eye)ベクトルの長さに意味はないからな。
ああ、そういうことか・・・ gluLookAtのupと同じように向きだけが重要なんですね カメラのモデルを完全に間違って理解してた
くるくるまわる立方体を表示したいと思っています。 下記の順で定期的にレンダリングしてるんですけど ライトまでくるくる廻ってるように見えます。 自分がしたいことはライトは一方向からずっと照らしてて 立方体だけくるくる廻ってるのをカメラで狙って画面に表示したいんですけど 立方体が回転にあわせて明るくなったり暗くなったりしてしまいます。 これって手順を間違えてライトも回してしまってるんでしょうか。 どういう順にライトの設定、カメラの設定、立方体のレンダリングをすれば 意図した表示が出来るんでしょうか。 glMatrixMode(GL_MODELVIEW); glLoadIdentity(); setCamera(); // 固定位置 setLighting(); // 固定位置 glRotatef(); renderCube();
glPushMatrix(); glRotatef(); renderCube(); glPopMatrix();
pushは関係ないかと。
>>126 であってる。
立方体の法線が全部同じ方向向いてたりとかじゃね
glut使ってるならrenderCubeをglutSolidCubeとかにしてみたら
>>127 こうしましたが変化なしでした
void render()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
setLighting(); // 固定位置
setCamera(); // 固定位置
glPushMatrix();
glRotatef(rot, 1.4, 1.4, 0.0);
renderCube(0.6); // 一辺0.6の立方体表示
glPopMatrix();
rot += 12;
if(rot == 360)rot = 0;
}
>>128 これっぽいです!
glutは使ってないからわからないですけど
glBegin(GL_POLYGON);でやってるので多分法線設定されてない・・・?
試しに頂点配列でやってみます。
>>130 glBegin使ってるならglNormal使わなきゃ法線設定しないよ
OpenGL使うための環境設定で調べ回ってるが心が折れそうなので質問させてくれ OSはWindowsVista32bit グラボはGeforce8600GTS 基本ヘッダだけ最新にしてwglGetProcAddressで使うAPIを持ってくるようなんだが、 OpenGL4.0で古いのが一掃されたみたいだがそのヘッダが見つからない。 gl3.h gl.h glext.h どれ(すべて?)使うべきなのか・・・。スタブライブラリいらないんだろうかとか opengl.orgのスペックカード見て関数取り出していくような感じなんだろうか 最終的にWindowsでOpenGLES2.0互換の環境つくりたいんだ ご免ね、DirectX畑でOpeGLの作法分からなくてご免ね
っAndroidシミュレータ
136 :
133 :2011/07/18(月) 07:30:03.94
>>134 Androidエミュレータかな? あれはOpenGLES2.0動かないんだ・・・
あとすごい重い
>>135 ありがとう。とりあえずそれを調べてみる
拡張はOpenGL Extension Viewerで見てみたら
3.3まで100% 4.0全滅 4.1がES2.0関連がOK?のようだ.具体的には
GL_ARB_ES2_compatibility OK
GL_ARB_get_program_binary OK
GL_ARB_separate_shader_objects OK
GL_ARB_viewport_array OK
Shading language version 4.10 NG
GL_ARB_shader_precision NG
GL_ARB_vertex_attrib_64bit NG
のようなのでいける?のかな
OpenGL ES2.0の関数ヘッダ、ポインタとwgl系の関数ヘッダ、ポインタのファイルを
作ればいいんかな(あとegl)
とりあえずやってみる。ありがとう
>Androidエミュレータかな? あれはOpenGLES2.0動かないんだ・・・ eeeee 俺後でやろううと楽しみにしてたのに・・・・ 動かないのか・・・・
ANGLEはGLSLも含めて結構真面目にd3d9への変換やってるから使えると思うよ 5年以上前のintelのヘボgpuでも動くし
普通にEGL使えばいいんじゃない? WindowsでES2.0やるときはいつもそうしてる。 MacならiPhoneシュミレーターがオススメ。 Androidシュミレーターはゴミ。
下の様にカメラと同じ座標に光源を置いているのに 画面の正面が明るくならず上から照らされる感じになるのは どんな理由が考えられますか? gluLookAt(0, 0, -5, 0, 0, 0, 0, 1, 0); GLfloat lightPosition[4] = {0.0f, 0.0f, -5.0f, 0.0f}; glLightfv(GL_LIGHT0, GL_SPECULAR, lightPosition);
>>140 書き間違えましたここ誤記です><
×glLightfv(GL_LIGHT0, GL_SPECULAR, lightPosition);
○glLightfv(GL_LIGHT0, GL_POSITION, lightPosition); ←ちゃんとこうしてます!
法線の設定してないんじゃない?
>>140 俺の超能力だと、gluLookAtとglLightfvの間にglRotatefがあると思う。
あと関係ないと思うけど、点光源をカメラと同じ「位置」に置きたいなら、ライト位置のwは1.0だよ
途中に行列演算が入っている、くらいしか思いつかない。
glNormalはglVertexより前に...
わ、わ、わ!!出来ました!! ありがとうございますーー!!
シャドーマップを使った影生成の解説ありませんか? 基礎から現在のゲーム業界で使われるテクニックまでトータルで解説してあるもの。 英語でもいいです。
glui でspinnerを表示しその枠内でバックスペースを連打すると string subscript out of range と出るのですが 解決法ありますか?
現在のゲーム業界という意味ではRealTimeRenderingもいいかもしれない。
影というより全体的だけど、コンシューマ機の仕組み載ってると言う意味で。第3版翻訳マダー?
>>139 EGLのWindows実装ってもうあったっけ?
>>154 いくつかあるが製品に組み込んでokかどうかは知らん
カメラ(glLookAt)管理はどんなクラス作ってる?
俺はとりあえず2軸ベクトルと、ターゲットの位置と、カメラの現在地の 3組のfloatを持ってるだけのクラス。 これはワールド上に配置される何かって位置づけにしてるので、それだけ。 描画先デバイスのアスペクト比とかは、別の立ち位置のクラスに持たせてる。 そんな構成
と言うか、glLookAt関数自体は使ってないや 特に不要というか
アスペクト比も独自管理ってことはgluPerspectiveも使わないってことですか? むずー
俺はCameraだな。 基本的なパラメーターfov,aspect_ratio,near,far. あとはT,R,S,M(それぞれ平行移動、回転、スケーリング、任意の4x4行列)
161 :
デフォルトの名無しさん :2011/07/25(月) 17:59:31.08
視点座標を元にテクスチャー座標を自動生成するときの順番で質問があります。
こういう順番(回転、生成、ティーポット)で書くとテクスチャーがティーポットの回転にくっついて
一緒に回るのですが、これが納得いきません。
// 回転
glRotatef (angle, 0,1,0);
// テクスチャーの自動生成
glTexGenfv (GL_S, GL_EYE_PLANE, tex_gen_func);
// ティーポット
glutSolidTeapot (1);
glTexGenfv()を発行した段階でMODELVIEW行列はすでに回転済み(実際に取得して確かめた)にもかかわらず
なぜテクスチャーは視点に固定にならないのでしょうか?
床井先生のところ
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20041229 でも同様の解説があり動作自体は問題ありません。
ただOpenGLがこういう動作になるのが納得行きません。
今まで愉快先生と誤読していた俺を何とかしてくれ
tokoi……だと……!?
ところがとっこい
>>161 ちょっと質問の意味がわかってないんだが、GL_EYE_PLANEは関係ないんじゃないか?
視点座標での生成はGL_TEXTURE_GEN_MODEをGL_EYE_LINEARにするとできる。
あとテクスチャ座標の自動生成は描画時点で計算だからな
glTexGenを呼び出したタイミングは関係ない
>>161 GL_EYE_PLANEのパラメータはそれを設定したとき(glTexGenを呼んだとき)のモデルビュー行列で変換されるよ
だからティーポットを描くときのモデルビュー行列で呼んだら、ティーポットのモデルビュー行列で変換されて、ティーポットの位置や向きと連動するよ
モデルビュー行列が恒等変換のときにglTexGenを呼べば、ティーポットの向きに関わらず一定になるよ
167 :
デフォルトの名無しさん :2011/07/25(月) 23:27:04.78
うーーん、と? 赤本によると
生成される座標 = p1x + p2y + p3z + p4w
従ってGL_EYE_LINEARの時はビュー座標(x,y,z,w)をパラメーター(p1,p2,p3,p4)で変換してテクスチャー座標ですよね?
>>161 の場合はティーポットが回転すると、例えば注ぎ口のビュー座標も変化するので、それに応じてテクスチャー座標も変化しますね。
ところが実際にはそうならず常に一定のテクスチャー座標が割り当てられます。
これはどう説明するのがいいのでしょうか?
168 :
161 :2011/07/25(月) 23:35:51.07
あ、わかりました。
>>167 の式はGL_OBJECT_LINEARの時だけですね。2ページ後ろに
生成されるテクスチャ座標 = p1'x + p2'y + p3'z + p4'w
ただし(p1' p2' p3' p4') = (p1 p2 p3 p4) M^-1 (Mはモデルビュー行列)
というわけでパラメーターの方がモデルビュー行列に応じて変化するんですね。
こんなのわかるか〜 (ノ`Д´)ノ彡┻━┻
素直にビュー座標にパラメーター(一定)をかけて作ってくれよ...
シャドーマップを実装しようと思っているのですが先は長そうです。
169 :
161 :2011/07/25(月) 23:50:56.45
しかしこのOpenGLの仕様は謎ですね。 なんでわざわざGL_EYE_LINEARでビュー座標を使えと指定しているのにオブジェクト座標に戻すのか・・・ 仕様策定の時に酩酊していたとしか思えない。 この仕様はおかしい。
OpenGLのOpenは開けっ広げの意味 OpenGLのGはGirlのG OpenGLのLはLadyのL
もう少しだけ頑張ってみる。
素直に頂点シェーダ使え
素直になんかなれない
ごめんね素直じゃなくって
夢の中なら言える
砂漠怪人 砂男
逝ってみたいと思いませんか?
ウッフフー♪
179 :
デフォルトの名無しさん :2011/07/26(火) 21:17:52.06
バカやってないでOpenGLについて語れ
OpenGLのゲーム向けフレームワークてかクラスライブラリありませんか
ゲームエンジンとは違うの?
>>180 それを作るのが醍醐味。 てか、OpenGLの、ゲーム向け、ってどういう事だよ
物理エンジンがくっ付いてるタイプでサポートがしっかりしてるパブリックドメインのがいいです
物理演算でなにやるつもり?
なぐるんだろ?
ダンボール箱でなぐるゲーム作ります 角が攻撃力高いです
ダンボールは投げて遠くの敵を殺すことも出来ます ダンボールが雨にぬれるとダンボールがふやけてプレイヤーは死にます これはプレイヤーの命がダンボールにこめてあるためです。
VC2010で、windows.hをインクルードしないで、 gl.hやglu.hの関数を使用する方法はありませんか? なぜこんなことを言うのかというと他のライブラリとwindows.hが一部競合 してしまって・・・無理なら他の解決策を考えます。 すごく具体的にいうと、juce libraryです。
windows.hじゃなくて、windows.hから呼ばれてるヘッダのうち一つを呼べば十分だったと 思うけど・・・どのヘッダだったかな。忘れちゃった。 あるいは、WINGDIAPIとAPIENTRYを自分で定義してやれば?
190 :
188 :2011/07/27(水) 15:44:42.35
>>189 ありがとうございます。
アドバイスにしたがって定義してみました
#ifdef _WIN32
#define WINGDIAPI __declspec(dllimport)
#define APIENTRY __stdcall
#define CALLBACK __stdcall
#endif
一応競合は解消され、コンパイル、動作ともに良好です。
が、とても無理やりなかんじです。
なにか他に方法を知っている方がいらっしゃいましたら、
教えていただければ幸いです。
そんだけで解決できるならwtypes.hでいいんじゃない
192 :
188 :2011/07/27(水) 19:39:58.44
>>191 #include <WTypes.h>
でいけました。
ありがとうございました!。解決です。
193 :
デフォルトの名無しさん :2011/07/27(水) 19:46:39.51
OpenGLのコンテキストだけ作ってくれてmainループを乗っ取らないglutみたいなウィンドウツールキット(?)ないですか?
194 :
デフォルトの名無しさん :2011/07/27(水) 19:59:14.78
結局ゲーエルユーテーってどうなん
GLFW がわりと近いんじゃないか
196 :
193 :2011/07/27(水) 20:23:53.05
>>195 非常に良さそうなのですが、ウィンドウを作らないでOpenGLコンテキストだけ作れませんか?
ウィンドウ自体はFLTKを使って作って、その中の一部のウィンドウだけ(ウィンドウツールキットとは独立して)OpenGLを使いたいです。
そこまで行くとツールキットとかじゃなくてwglなりglx直接使ってコンテキスト作るしかない
OpenGLコンテキスト作るだけで良いなら簡単だろ それとも、OpenGLコンテキスト作る他に何か求めてるものでもあるのか
タイトルバーとかないポップアップウィンドウをウィンドウに貼り付ければいいじゃん
200 :
193 :2011/07/27(水) 21:55:35.06
ウィンドウとOpenGLコンテキストは不可分(?)みたいなので、あきらめてFLTKのOpenGLを使います。 ありがとうございました。
どうせ汎用性とか言ってもWindowsしかテストしねーなら Windows専用でいいじゃない
クリックした場所の3次元座標を取得するにはどうすればいいですか?
レイ飛ばすとか
>>190 そんなバカみたいな事しなくても、VC++使う時で、特に windows.h includeしたくない時は、
コンパイラのプリプロセッサ定義を _CONSOLE にして、リンカのサブシステム指定を WINDOWS にしてやればおk
そうすると、メインエントリが WinMain じゃなくて、main になるので、
windows.h も stdafx.h も必須じゃなくなる。
※要はコンソールプログラムとしてコンパイルはされるが、
サブシステムとして コンソールベースでなく、ウィンドウGUI前提になるので、多分望みどおりになる
※ただし、勿論当然、win32は扱えなくなる。自前で改めて includeすれば当然使えるが。
また、これらの設定を IDE の GUI から行わずに、プリプロセッサマクロで指定したい場合は、
_WIN32 だったかが定義されてるか否かで、ifdef すればいい
×定義されてるか否かで、ifdef すればいい ○定義されてるか否かで、分岐すればいい ワケわからん事言ってしまった
ifdefは業務でもやる手だろう 特別なことじゃない それに分かりやすい
>>206 いや ifdef を使う使わないじゃなくて、意味が重複したから訂正しただけ
oh
pun
210 :
デフォルトの名無しさん :2011/07/28(木) 02:00:29.43
汁
212 :
デフォルトの名無しさん :2011/07/28(木) 13:45:16.28
点光源を指定するときに赤本によると「GL_POSITIONは(0,0,1,0)で、これは、Z軸の負の方向を向いている指向性光源を定義しています」と書かれていますが、 なぜ方向として(0,0,1)を指定するとZ軸正の方向を向かずに負の方向を向くのでしょうか? 単なる誤植?
213 :
212 :2011/07/28(木) 13:45:45.13
点光源ではなく指向性光源でした。
ライトの向きと法線の内積をとるから 向きが(0, 0, 1)の場合は法線も(0, 0, 1)の時最大になる 外から見た場合の向きとは逆向きを指定しないといけないんだよな
デプスバッファーからGL_DEPTH_COMPONENTを指定したデプステクスチャーにコピーして、 それをメインメモリにコピーしてPNG画像で出力仕様としています。 テクスチャーからメインメモリにコピーするときに、ドキュメントには glGetTexImage (GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, pixels); というようにGL_DEPTH_COMPONENTを<<<指定してはいけない>>>と書かれていますが、 glGetTexImageを使わずにどうやってデプステクスチャーからメインメモリにコピーすればいいか教えてください。 ちなみに試しにやってみたら正しく取れているようです.... (デプスバッファーをちょくに読み取るのはできましたがデプステクスチャーから読む方法を探しています)
GL_POSITION が (0, 0, 1, 0) ということは w=0 だから xyz を w で割って (0, 0, +∞) つまり +z 方向の無限遠点に光源があるんだと思うとスッキリする
あれ光源の「方向」を指定してるんじゃなくて、あくまでGL_POSITION、つまり「位置」を指定してるんだよな... アホか。
ん?日本語としては意味は同じ気がするが・・・。 >+z 方向の無限遠点に光源がある >「位置」を指定
>>217 If the last value, w, is zero, the corresponding light source is a
directional one, and the (x, y, z) values describe its direction.
ハッキリ (x, y, z) は 「向き」 だと書かれてるからなぁ
w で割って (0, 0, +∞) の「位置」に点光源がある(平行光線)と考えるのは、
結果的にそう考えても(この件に関しては)不都合がないというだけの話でしょ
その考え方は、方程式の授業で移項という操作を教え込まれるみたいで、
やはりなんか違和感があるんだよなぁ
文句ばかり言っても全く進まないから、
>>217 の考え方で乗り切るしかないけど
俺にはまったく直感的だけど、お前にとってそうじゃないのはどうしようもないね。
あれが直感的ってどれだけひねくれてんだお前
ひねくれてると言うより、計算プロセスが自然に目に見えるからでは 元々数学が得意な人と、そうでない人の間には、理解し難い溝がある
それを直感と呼ぶかどうかはさておき
歴代のボンゴレボスが持つ超直感に死角はなかった
>>215 ARB_depth_texture拡張じゃね
3.0以降は標準ぽい
OpenGLの入門用のWebサイトや本って、なぜかGLUTというライブラリを使ってるみたいですが 直接OpenGLを使う方法をとっている本やWebサイトを教えてください
>>229 出来れば日本語のほうが嬉しいですが、英語でもかまいません
>>231 Desktop Tutorialが準備中で
これまでのTutorialがレガシー扱いになってるな。
4系対応に期待
拡張使えるはずなのに gl_InstanceIDARB でエラーが出るぞと思ったら、 #extension GL_ARB_draw_instanced : require しなきゃいけなかったのか。コレで実験できる
何言語よそれ
GLS言語と言えば満足か?
満足できないな
そんなことではチームサティスファクションに入ることは出来ないな・・・ OK。巣に帰ろう
239 :
190 :2011/08/01(月) 04:26:24.97
>>204 ありがとうございます。
ですが、問題はマクロやテンプレートの競合で、
WinMainはもともと使っていませんでした。
stdafx.hはプリコンパイル済みヘッダも今回は使っていません。
今はサブシステム指定を WINDOWSにしてエントリーポイントだけ、
mainCRTStartupに変更しています。
ただデバッグだとコンソールが便利なのでリリースだけですが
240 :
デフォルトの名無しさん :2011/08/02(火) 11:04:04.62
OpenGLES1.X系と OpenGLES2.0の違いをバグ解消を含めてまとめられて いるサイトをご存知ありませんでしょうか? なかなか見つかりません。 αブレンディングがOpenGLES1.X系でうまくいっておりません。
大方ソートしてないだけ。
相変わらず半透明の交差はできないのね
まあZバッファでは…
1.x系と2.0で仕様バグの修正とかいうのは無いんじゃないのか ドライバのバグ修正なら機種を限定しないと見つからんだろう
アキュムレーションバッファってglutでないと使えないの(´・ω・`)?
んなーわけない
アキュムレータってアセンブラじゃないと使えないの(´・ω・`)?
アキュムレータって機械語の計算用レジスタの事じゃないの?
>>246 ですよね
ただglAccumでINVALID_OPERATIONが返ってくるんですよ
多分glutInitDisplayMode(GLUT_ACCUM)で状態変えてないからだと思うんですが
これって中では何をしてるんですか?
>>249 WindowsならChoosePixelFormatで使う値の変更
OpenGLのステート変えてるわけではないのか・・・ もうちょっと調べてみます
むむ、万策付きました glutを使うプログラムをテストするとアキュムレーションバッファが使える glutを使わないプログラムだとアキュムレーションバッファが使えない どうもバッファ自体が存在しないらしい PIXELFORMATDESCRIPTORもいじってみたが効果無し どなたかアキュムレーションバッファを増築?させる方法をご存知であればご教授願います
/ ̄ ̄ ̄ ̄ ̄ ̄\ / \ / ヽ l:::::::::. | |:::::::::: (●) (●) | |::::::::::::::::: \___/ | ヽ:::::::::::::::::::. \/ ノ \ / ♪ / ::::i \ / / ::::|_/ \/ ::| | ::::| キュム i \ ::::/ キュム \ |::/ |\_// \_/
254 :
252 :2011/08/03(水) 22:38:44.41
連投失礼 やりたいことは被写界深度からずれた時のボケとモーションブラーなのでアキュムレーションバッファを 使わずにこれらを実装する方法があればご指南願います
>>252 多分、そこまで触ってる人いないかもしれない。
あるいはいたとしても、たまにしか来ないかもしれない。
勿論、俺はわからない
>>254 以前、マルチサンプリングがうまくいかなかったときに、
wglChoosePixelFormatARB
で何とかした記憶がある
アキュムレーションバッファは、やったことないから知らない(´・ω・`)
>>252 > PIXELFORMATDESCRIPTORもいじってみたが
どう弄ったんだよ書いてみろ。
>>252 glutだと動くならglutのソース落としてきてglut_win.cのglutCreateWindowの中で
PixelFormatがらみでなにやってるかprintfでもしてみればいいのでは
てきとーにぐぐってみたがやっぱりChoosePixelFormat,SetPixelFormatあたりで設定するみたいだな この関数でエラー帰ってきてたりしてない?GLUTで使えるんならビデオカードが対応してないことは ないだろうし。どっかにGLUTのソースなかったっけ。まぁまだ万策と言うには早いな ボケとモーションブラーならステンシルバッファとかテクスチャに描画して拡大縮小なりフィルタなり 色々あった気がする。GAME WATCHのグラフィックス講座でも見てみたらいいんでないか
260 :
252 :2011/08/03(水) 23:58:33.54
多レス感謝です
とりあえずやってみたことは以下です
HDC hDC = wglGetCurrentDC();
PIXELFORMATDESCRIPTOR pfd = {
.....
1, //accumulation buffer
.....
};
int iPF = ChoosePixelFormat(hDC,&pfd);
SetPixelFormat(hDC,iPF,&pfd);
(pfdの他の値は
http://www.sm.rim.or.jp/~shishido/gltest.html )
これから
>>258 ,
>>259 辺りを検証してみます
>>260 はあ。1bit のアキュムレーションバッファか
263 :
252 :2011/08/04(木) 00:45:37.89
意味も理解せず書いておりました。お恥ずかしい 結局以下のようにしました HDC hDC = wglGetCurrentDC(); PIXELFORMATDESCRIPTOR pfd; int iPF = GetPixelFormat(hDC); DescribePixelFormat(hDC, iPF,sizeof(PIXELFORMATDESCRIPTOR), &pfd); pfd.cAccumRedBits = pfd.cAccumBlueBits = pfd.cAccumGreenBits = pfd.cAccumAlphaBits = pfd.cAlphaBits; pfd.cAccumBits = pfd.cAccumAlphaBits + pfd.cAccumRedBits + pfd.cAccumGreenBits + pfd.cAccumBlueBits; iPF = ChoosePixelFormat(hDC,&pfd); SetPixelFormat(hDC,iPF,&pfd); これでAccumのBitsは変わったのですが、相変わらずエラーがでます。 それと何故かAccum側はColor側と同じバイトを用意させてるはずが、2倍のビットが用意されます。 むう、何かまだ勘違いしていそうです
アキュムレーションバッファはDeprecatedになってるから 素直にFrame Buffer Objectを使うようにしたほうがいいんじゃないの?
アキュムレーションバッファって凄い重かった様な気が 速度気にしないならいいけど
266 :
252 :2011/08/04(木) 11:51:52.16
Deprecatedなんですか・・・赤本に普通に記述してあったので使ってみようと思ったのですが Frame Buffer Object (+Shader?)で同じことができそうですか?であればそっちを勉強しようと思います 重いのはちょっと嫌ですし
はい
これだけコメントもらってもアキュムレーションバッファ使えないならFBO+Shaderとか無理じゃね glutで動くならそのままglut使っとけ
ポリゴン描画は出来るけどアキュムレーションバッファだけ使えないの? それともポリゴン描画すら出来ない?
新しいGPUで快適に動くようにしたいなら、FBO + Shaderでボケとモーションブラーを実装したほうがいいかと。 古くてFBO+Shaderが使えないけどアキュムレーションバッファが使えるGPUでも動かしたいなら アキュムレーションバッファを使うのがいいかも。
>>268 これだけアドバイスいただいてあっさりあきらめてしまったのは申し訳なかったです。
精進いたします。
>>269 ポリゴン描写は出来ています。
>>270 そういった情勢の話はありがたいです。
しばらくはFBO+Shaderの方向で勉強です。
doom3がオプソ化されるとか
>>271 FBO は便利。とにかく便利。マジおすすめ。
がんばって勉強するのだ。
274 :
デフォルトの名無しさん :2011/08/06(土) 23:02:50.00
「バッファリングの半分は優しさで出来とる。」
あとの半分はメモリです 以上です
愛のメモリー
オライリー初めてのOpenGLESのサンプルコードがダウンロード出来ないぞ 金返せごるあ! っていうのは外出ですか
OpenGL4.2来てる
またバージョンアップか
OpenGL4.0以降はかなり期待しているので、VerUpはうれしいです まあ、2.1で手に余っていますが
nVidiaがもうOpenGL4.2対応のドライバをリリースしたらしいが そもそもOpenGL4クラスのGPUはどのくらい普及しているのだろうか。 俺はまだOpenGL3クラスの3Dアクセラレータを使ってるぜ。
>>281 ゲーマーに限って言えば、steamの統計が参考になるかも、意外と最近はDX11クラス使ってる人が多かった気が。
GLSLでgl_FragColorのアルファ値をいじってもポリゴンのないアルファ=0の部分が変化しないのはどう理解すればいいんだろう?
FragColorってフォグの色なの?
>>284 理解も何もキミの理解が間違ってる
シェーダーってのは、基本的にポリゴンのシェーディングをする物
ポリゴンが無い部分はフレームバッファ(テクスチャだとFBOとか)だよ
>>287 フラグメントは文字通りポリゴンのフラグメントのシェーダーなわけか
そうするとバーテックスシェーダーって言い方が微妙な気がしてきたがまあいいや
ありがとう
289 :
285 :2011/08/11(木) 00:21:12.86
GL_FOG_COLOR と勘違いした orz
素直でよろしい。
フラグメントシェーダは三角形をレンダリングするときに 三角形を構成する各フラグメントに対して実行される。 昔は頂点単位でライティングの計算をして、ポリゴン内部は頂点の色を補間していたので バーテックスシェーダという言い方はそんなに変でもないと思う。 まぁ、ジオメトリシェーダではシェーディングの計算する事が無くてもシェーダと呼ばれるわけだから 今はもうシェーダ=シェーディングを計算する物という意味では使われなくなっているんじゃない。
パラメータはテクスチャじゃなくてテクスチャユニットに付く属性? glTexEnvで設定するのもユニットに付く?
glTexParameterはテクスチャオブジェクトに付く属性 glTexEnvはテクスチャユニット
ウチの環境(Ubuntu 10.04 LTS、CompizFusion、GeForce2 MX/MX400プロプラドライバ、freeglut3)でGLUT使うと glFlush()やglFinish()では、画面が即時には更新されず 他のウィンドウを一旦上に置くなどして、ウィンドウの再描画を促してやるとやっと更新される CompizFusion(3Dデスクトップ)を切ると更新されるようになるから、CompizFusionとかち合ってるのは間違いないんだが なぜかglutSwapBuffers()を使うと即時更新されるのがよくわからん…内部的には何が違うんだろ?
Compizとか使うと強制的にダブルバッファが有効になってるんだろう
ああ、そういうことか それを参考にfreeglutのソース読み直したら理解できた freeglutのglutSwapBuffers()はGLXのglXSwapBuffers()を呼んでるのな 俺の勘違いは「OpenGL仕様にダブルバッファはない」のだから ・OpenGL自体は常に単一バッファであるため、glFlush()やglFinish()の動作は不変 ・だからGLUTやCompizFusionはそれを自前か、または何らかのライブラリで実装している という風に思い込んでいたんだ…ところが 実際は仕様でなくとも「実装」であるGLXがダブルバッファを持っているから、どちらもそれを利用していて GLXのダブルバッファを有効にすると、同じくGLXで実装されているglFlush()、glFinish()の動作に影響してしまうワケね ありがとう、すっきりした!!!
>>297 GLXの都合でダブルバッファになっちゃうというのは合ってると思うんだけど、
「OpenGL仕様にダブルバッファはない」は違うと思う。
glDrawBuffer()/glReadBuffer()でfront/backバッファの指定ができるし、
OpenGLはダブルバッファを扱う(ついでに言えばステレオも)という解釈の方が
適切なんじゃないかな。
>>299 赤本の割と後ろのほうの、バッファの項に書いてあった…<<glDrawBuffer()/glReadBuffer()
索引からダブルバッファで探すと、最初のほうの「アニメーション」の部分しか出てこないから見逃してた
こうやってOpenGLの仕様内でもダブルバッファは実現できるのね、サンクス
glGetDoublev(GL_MODELVIEW_MATRIX, ptr);が失敗するようで ptrの配列にデータが書き込まれてこないんですけどどんな原因がありますか?
いろいろな原因があります
>>.302 kwsk
ptr に原因があるんじゃね?
GLdouble[16]のptrです
つglGetError()
GL_INVALID_OPERATIONでした なんだろこれ・・・
もしかしてWindowsに標準搭載されてるopengl32.dllでサポートされてない関数なんでしょうかglGet
glGet自己解決しました。 glGetを使用するマウス入力処理が描画処理の外(wglMakeCurrent(セット)〜wglMakeCurrent(解除)の外)にあるため失敗していたようです。 描画以外で使うなら各種マトリクスは自分で覚えとけってことなんですね。
>>309 OpenGLの関数は基本的にOpenGLのコンテクストが設定されていないと使えないんじゃ。
よーく覚えてOK
>>310 コンテキストの設定はライブラリ中の描画関数呼び出し前後でやっててプログラム側では見えてなかったので
盲点でした。。
領域と画像サイズが合ってないんじゃね。widthに1加えたらうまくいきそうだが...
どこのサンプル見てるか丸分かりだなw クライアントエリアを固定サイズにしてglViewPortをちゃんと設定すると直ると思う
>>309 に関連して
ModelView行列はフレーム処理の最後にGLdouble配列に保存しておくとして
描画のフレームスキップ中にもModelView行列を参照したい場合どうすればいいでしょうか
描画処理を行わなくても入力処理は行うのでフレームスキップ中でもModelView行列を
更新しないと古い情報を使用してしまうため困っています
>>316 描画する時以外は常にOpenGLのコンテクストが設定されていない状態なの?
プログラム起動中はずっとコンテクストを設定しておくとか
OpenGLの関数が必要なときだけコンテクストを設定するとかは駄目なの?
俺はコンテクスト一個で済むときは初期化からずっとコンテクストは設定したままにしてるし
以前複数ウィンドウ&複数コンテクストなプログラムを作ったときも描画終了時にコンテクストをはずしたりはしなかったよ。
>>317 Windowサイズが変わるとhdcも変わるので(?)毎回コンテキストを設定してるみたいです(ライブラリ側で)
なので描画時しかOpenGLの情報を取得できないです。
カメラ座標等からModelView行列が取れればいいんですが数学の知識に乏しく・・
1. 別にコンテクストを作っておく 2. 行列計算を自分でする どちらか選べ
ライブラリってのもオリジナルのライブラリなの? ならModelViewをGet/Setするっていう機能をライブラリに追加すればいい
普通は2かな?
なるほどModelView行列雪駄下駄を追加してもらえば行けそうですね ついでにView位置からモデル座標を割り出すために深度バッファもフレーム処理の最後にコピーを保存してもらって コンテキストがない時でも取得可能にして下さいって言ったら怒られますかね・・・さすがに・・ 通常って深度バッファも保存しておくものですか?
openGLを外部から直接触れないようにするライブラリなら、 ライブラリユーザーが何を言っても怒られるこたーないだろ。 怒りっぽい人が作ってるなら別だが。 で、ここはopenGLのスレだから、そのヘンテコライブラリの実装について聞かれても困るよ
そこは積極的には聞いてないですが深度バッファは通常ローカルバッファに保存しておくものでしょうか
好きにせぇや。 その辺りからはプログラマの思想次第。 答えはない。
>>324 GPU-CPU間のやり取りは、時間がかかる。
普通は、わざわざCPU側に保存しない、と思う。
>>322 の
>View位置からモデル座標を割り出すために深度バッファも
って所が気になるが、まぁいいか
>>329 Viewのマウス座標(x, y)+深度バッファ(z)からgluUnProjectでモデル座標を計算してるんですが
深度バッファを利用せずに低コストに代替できるような方法があれば是非教えて頂きたいです
>低コストに ここが鍵だな
>>331 なら(x,y)の深度だけがわかればいいので、深度バッファ全体を貰うことはないのでは?
とりあえず326も言うようにGPU<->CPUのデータのやり取りは高コスト
まぁ遅くてもいいっていう場合もあるし、
>>325 が正解か
>>333 どんなマシンを想定するかとかもあるしねー
>>331 「入力処理→移動処理→描画処理(処理遅延状況でフレームスキップの可能性あり)」
の3ステージに処理を分離しているので描画処理の時点では
取得が必要な座標がどこなのか決まらないんです。
このため全ての座標について深度を保持しておく必要があるかなと思っています。
それともっと問題なのが描画処理がスキップされた場合保持しておいた深度バッファの情報も
古くなっているという・・
ジレンマだらけです
こんにちは。 無数のポイントからそれぞれのポリゴンが交差しないような メッシュを作成する方法はないでしょうか? 結果としてはボールのような形になると思います。
頂点集合Sから、凸包を作れる最小の頂点集合Mを抽出 凸包を3各ポリゴンで作成 M≠SならばS-Mに対し、それを凸包のポリゴンからの距離が近いグループで分割 このポリゴンーグループの集合に対し凸包を作る、以下繰り返し
宿題? スレチだよ
バウンティングボックスを真空パックみたいにちぢめてけばできるよ
>>399 曖昧
辺の繋ぎ方が提示されていない
あと、もし無数のポイント「全て」を使ってという制約があるなら、
>>399 が考えている方法ではたぶん無理
無数のポイント全てとかちょっとロマンティック
無数の星屑(ポイント)すべて集めたら あなたへ課題(レポート)提出するの きっとそのとき凸包は張り裂けそうに鋭角 やさしくつつんであげる♪ 以下繰り返し
質問があります。 現在、顔の2次元データと、3次元データを持っております。 この3次元データに対し、2次元データをマッピングしたいのですが、 うまくいきません。 現在やっている処理は glTexCoord2d -> glVertex3d で顔のポイントを対応づけています。 ただ、これだけでは、顔の3Dデータに対し2次元データがうまく貼り付けられず、 z軸(奥行き?)が飛び出してしまっているような状態になっております。 もしよろしければ、アドバイスをいただけないでしょうか。 よろしくお願いします。
ただのテクスチャマッピングをしたいけど、うまくテクスチャが貼られません こういうことでいいのか。抽象表現やめて素直に書けよ。
というより、ポリゴンとテクスチャが有るけどテクスチャ座標が分かりません かと。
>glTexCoord2d -> glVertex3d で顔のポイントを対応づけています。 >ただ、これだけでは、顔の3Dデータに対し2次元データがうまく貼り付けられず、 これだけで貼り付けられるはずですが
おおかた巻きつけで貼るテクスチャ画像をxyで貼ってるとかそんなんじゃね
ソースなり結果画像なりださないとやり方は合ってるから問題なしとしかいえないよ
351 :
336 :2011/08/21(日) 02:58:45.80
凸包というのですね、知りませんでした。
ちなみにレポートでもなければ宿題でもありません。仕事です。
辞めた(逃げちゃったに近い)人の仕事を引き継いだのですが、
一部OpenGLで表現するところがあって自分は3Dは未経験なので
参考書片手にポリゴンを出すところまでは出来ました。
そんなところに
>>336 のような要求が来て困っています。
ぐぐってみたところ考え方みたいなところは見つけたのですが、
自分にはさっぱりでした。
凸包を生成してくれるような拡張ライブラリみたいのはないのでしょうか?
>>351 Convex(凸包)とか、そういう固有の要件はもう OpenGL ライブラリとは無関係なので
>>352 の誘導先に行くか、さもなきゃ bullet でも使っとけ。そして bullet の質問は他所で
あと、考え方がさっぱりでした、な状態でそんな仕事するな。話来た時点で他の人間に回せよ
>>352 外郭だけを表示するのが目的なら凸包でいいけど、
ひょっとして有限要素法なんかで使われる
メッシュ作ろうとしてるんじゃないよね?だとしたらこっち
- Netgen Mesh Generator, Gmsh メッシュ生成
- Finite elements for partial differential equation
- ALBERTA Adaptive finite element library
仕事で怪しげなライセンスはどう
356 :
336 :2011/08/21(日) 22:16:04.62
凸包についていろいろありがとうございます。 スレチのようなので誘導先で質問してみます。 ちなみに会社が零細なので人がいないのと、OpenGLを知ってる人が辞めた人だけなのと、 たまたま案件が片づいて手隙になったのが自分だったということで引き継いだのが経緯ですか。 スレ汚してしまい失礼しました。
357 :
デフォルトの名無しさん :2011/08/22(月) 15:27:46.23
OpenGLのウィンドウの作り方もわからないってことかな
>>357 >また、他にplyファイルを読み込む良い方法を知っている方がいらっしゃいましたら
>教えていただけると非常にありがたいです。
いや普通に読むだけだと思うけど。勿論、OpenGLだとかDirectXとかじゃなく、普通にC/C++でファイル読むっていうだけの話
>>357 まずC/C++の勉強から始めればいいと思う
>>357 そのクラスにはplyファイルを読み込むコードも描画するコードも既に入ってる
つまりそのcppファイルを変更する必要はないので、
自前のウィンドウを作るとこだけなんとかしてあとはLoadとDrawの各メンバ関数を呼ぶだけ
OpenGL自体が、そもそもどういう物かわかってないんじゃね さらに元ソースが他人の丸コピーで、その plyファイルとやらだけ自作したか、別人のデータを変換した ってだけなんじゃね。 だから大雑把で基本的な質問しか出来ないんじゃね 全部他人製のコピーって状態
まぁ最初はみんなそんなもんだ
そうでもない
こともない
質問者はこういう奴でした
>>368 恥ずかしい見落とししたからって、元レスの人と思いこもうとしないでくれ。
PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT; これって宣言に見えて定義なの?あるヘッダでこれをかいて他のところで読み込もうとすると複数回定義ではじかれる
じゃあこれはもう関数宣言的にヘッダなんかにかいて置けないの?
extern て付ければ宣言。 どこかに定義が1つだけ必要。
C言語の入門をやりなおすレベルだろ・・・
ありがとう んでもどうやらソースファイルの切り分けは出来ないみたいね ラッパーのようなものをしこしこ作るしかないのかしら
>>370 別人でも同じ見落とししてないと出てこない返しじゃね
それとも、sourceforge?何それ?おいしいの?な人の率高いのかこのスレ
時代はgithub or Google Code
>>376 言語の勉強やり直すことをオススメするわ・・・
研究室で使われるだけあってOpenGL界隈ってプログラミング未経験者多いのか
プログラミングもできないのにどうやってOpenGL使うんだよ。 単にOpenGLを使っているアプリを使うだけの事か? でも、授業でプログラミングを習ったけど大して身についていない学生が 別の授業や研究室でOpenGLを使ってプログラミングって事がありそうだな。
うちの研究室はそれだ
結局こうした //sub.h #include "GL.h" void glXxxEXT(Hoge hoge); void Startup(); //sub.cpp #include "sub.h" extern PFNGLXXXEXTPROC glXxxEXT0 = NULL; void glXxxEXT(Hoge hoge){ glXxxEXT0(hoge);} void Startup(){ glXxxEXT0 = (PFNGLXXXEXTPROC)wglGetProcAddress("glXxxEXT");} //main.h #include "sub.h" //main.cpp #include "main.h" void main(void){ ... Startup(); glXxxEXT(hoge); } 他になにかいいやり方あったら教えてくれ
一つ無駄にラップしているような…。
>>383 きっと彼はglewやgleeを超越した、まったく新しいパラダイムに基づいたライブラリを構築しようとしているのだろう。
特にこの部分が今だかつて誰も使った事の無い手法ではないだろうか。
> extern PFNGLXXXEXTPROC glXxxEXT0 = NULL;
> void glXxxEXT(Hoge hoge){
> glXxxEXT0(hoge);}
どうでもいいけど hoge(a,b){ } みたいなくくり方いやだわあ。 hoge() { } のほうが見やすいだろ。
そんなの人それぞれだろ
>>386 同意
古き良き時代のK&Rはどこへいってしまったのか
JavaとかC++のクラス定義とかからそんな感じのが蔓延しだした
>>386 Cより先にJava覚えた俺には上のが見やすい
2chスレに書くときは行数を詰めたいしね
>古き良き時代 画面が狭かったから今以上に行節約されてクソ読みにくかった
>>386 VisualStudio使ってると下に慣れるよな
Javaな人は上だよな
>>386 if文とかクラスは上だけど、関数は下だわ・・・
関数の方は下げないと動作が未定義だったような
ギャグかそれは
行を節約するなら閉じ括弧もLispっぽく纏めたらいいんじゃないだろうか
そっかー俺の関数全部未定義だったかーそっかー
コメントの改行の数も奇数だと動作が未定義だよな あとプリプロセッサマクロは実行時評価だったよな 死ね
何そのクソ仕様
これって計算で出てきたデータのプロットに適してる? cgplotみたいな使い方できる?
点を打つのと直線を引くのと三角形を描くことしかできません そういう用途にはデータプロット用のライブラリを使うべきで、 OpenGLを直接使うのはおすすめしない
OpenGLをグラフィクス処理の基盤として使い、
データプロット用のライブラリそのものを自分で書きます、なら使ってもいい
そういうレイヤ、あるいは作図で言えば
>>402 も言うような簡易な物です
今からOpenGLの勉強をするとしたら4.0を学べばいいですか? 将来的にはOpenGLを使ってFF14みたいなグラフィック・エンジンを作りたいです。
そんな事を言ってるヒマがあったら手と頭を動かせ
>>404 じゃあおれはクラウドの髪の毛担当するな!
ティファのおっぱい担当を早急に決めてくれ
>FF14みたいなグラフィック・エンジンを作りたいです。 こんなこといって始めるやつは1ヶ月以内に投げ出す法則
>FF14みたいなグラフィック・エンジン つまり見た目の割りにクソ遅い失敗作を作りたいって事?
>>404 4.0でもいいけど基本は3.0ベースなのでまず3.0あたりから学べばいい
OpenGL ES 2.0でもいいよ
とにかくシェーダと頂点バッファが無いと何も描けないところから始めよう
Windowsだと1.0だから1.0から学んだほうが
412 :
404 :2011/09/09(金) 10:03:53.56
いや本気なのですが... 出たばかりのこの本どうですか? Opengl 4.0 Shading Language Cookbook [ペーパーバック] David Wolff (著)
役に立つ本だよ。でもお前には現状不要だろ
>>412 入門の仕方を聞きにくるレベルで洋書買っても積ん読になるだけ
近道なんかないぞ
>>412 ペーパーブックを漁れるなら本家HPを熟読する所から始めたら?
>>414 が言うように近道なんて無いよ。
最初から本気のやつは2chのスレなんかで聞く前に自分で調べる
417 :
404 :2011/09/09(金) 11:36:30.15
なら日本語で読める4.0の入門書教えろよ。無いだろ馬鹿。 結局洋書を読むしか無いんだからいつ読んでも同じ
お前 Shading Language が何かもわかってないだろ。
入門書欲しくて逆ギレですかw
>>417 はニセモノです。
トリップ付けたので、今後ともご指導宜しくお願いします
つか、トリップ付けても君の今のスキルに入門書を読んだ程度じゃ ご指導ってレベルに至らないんだよ。
今のスキルを推し量れるなんて凄いですね。
「入門書の選定を他人に教えてもらう」程度のスキルだろ?
427 :
404 :2011/09/09(金) 15:53:50.76
うるせーよ。誰でも最初はそんなモンだろ。教えろよ
ツクールでもさわってろ(´・ω・`)
筒状のポリゴンにテクスチャーを巻きつけるように貼り付ける場合、 巻きつけテクスチャーの端と端で頂点を重ねるように準備するしかないですか?
テクスチャーユニットを複数使えば出来なくもない気がしてきた 0.0-0.1-0.2-・・・-0.9-0.0 で0.9-0.0間だけ別のテクスチャーユニットにする テクスチャー座標を指定しない頂点ってどうなるんだっけな?
OpenlGL 4.0 Shading Language Cookbookはタイトル通り こんなシェーダとかどうよっていう本なので入門書ではまったくない 4.x系の入門書っぽいものは無さそうだが OpenGL Programming Guideの8th Editionなんての出てたのね だが入門書としてはちょっと向いてないかもしれない
スキルなさそうなのに命令口調で口だけ立派なのが混ざってるよね
だな
教えてくれないからって拗ねるなよ
>>424 >>425 と
>>431 の話を良く見てくれ
それは今から OpenGL4.0を (という大くくりで) 勉強する人向けの本じゃ全然無い
タイトルに思いっきり書かれてるのに OpenGL4.0 っていう字面だけで持ってきて、どうですか?とか聞いてるぐらいだから
それが誰にでもわかる、推し量れるヒント、です。 それすらわかんなそうなので、横から補足
しつこい
乙ってまだ使うヤツいたんだ
そこなの?
フェアレディ乙とかまだ使うぞ
とりあえず何かに噛み付かないと死んじゃう病気なんだろ、もうほっとけよw
w使うヤツまだいたんだ
釣れたな。
>>443 おまえ宿題スレと麻雀スレで暴れてるキチガイだろ
>>434 の書き込みで気付いて関心引くようなレス書いたら即釣れるとかどうなの?
頭悪いレスつけまくって挙句に釣れたとか恥ずかしいからさっさと消えろよ、 小学生以下の知能しか無いならネットなんか使うなクソが
>>445 俺は小学生だからいいけどそんだけ怒りくるってお前大人の癖に脳が小学生以下だろwwwwwwwみてて恥ずかしいwwwwwwwww
前はこんなに馬鹿みたいな流れなかったのに、 あれか、ニコニコとかMMDとかから人流れ込んできたせいで こんな事になってんのか
変なおやじギャグの一言レスとかあったり。 その辺はどこから来たんだろうか。
コンパイルしてリンクしてin/outを接続して... たかだかシェーダーを使うだけなのに手間が多すぎる
手間多いけど一度関数作って隠蔽してしまえばそれで完了だろ。
そうやってみんな各自の俺ライブラリが作られて取り止めなくなっていくんだよね
それで問題ない
日本のPG能力の底上げが叶わない理由が分かった気がする
こんなカススレ覗いて「分かった」とかww
底上げじゃなく天井上げするために努力しろよ
じゃあおまえがソース公開しろよ
460 :
デフォルトの名無しさん :2011/09/12(月) 09:06:57.13
何?悔しかったのか?
うん そうだね プロテインだね
日本人でOpenGLというかGLSLバリバリに使った描画エンジンのソースって存在してる? ないような気がするんだけど。
バリバリ存在しまくりです
日本人で描画エンジンのソース? そもそもソースは人じゃないのでは?
>>464 こういう方とは一緒に仕事したくありませんわ
めんどくさそうです
俺は
>>465 とは仕事どころか、同じ部屋に居たくはないな
>>464 こういう誰でも(本人でも)理解していることをわざわざ皮肉たっぷりに書かずにはいられない精神が病んでる人とはねぇ
468 :
デフォルトの名無しさん :2011/09/13(火) 00:08:20.92
GLSL内の自作関数呼び出しっててオーバーヘッド大きいの?
>>468 基本的にシェーダ内の関数はすべてinline展開されてたはず。
気になるなら最近のOpenGLの拡張機能であるバイナリ出力を見るといいかも。
でもOpenGL4.0で関数の呼び出し先を変更できる機能が付いたようで
これはinline展開されないのかな?
OpenGL 4.0のサブルーチン(関数のことではなくシェーダーの一部(関数)を実行時に動的に入れ替える仕組み)が謎だな。 Uniform変数を見てif文で切り替えるのに比べて比較と関数呼び出しのコストがかからないらしいが... 絶対使わない。
>>472 謎も何もそういう機能がGPUにあるかドライバが何か頑張ってるんじゃないか?
本当に速いかどうかは謎だが試してみないことには絶対使わないは言いすぎ
474 :
デフォルトの名無しさん :2011/09/15(木) 03:21:35.74
OpenGLのテクスチャ周りの規則が厳しすぎ。 テクスチャをバインドしたらフィルタ等のフラグが全部クリアされるとかやめてくれ。 ちょっと順序を間違っただけでドツボにはまる仕掛けが多すぎるぞ。
BindTextureで設定がクリアされるんじゃなくて TexParameterで設定できる物はテクスチャオブジェクト毎に保持されてるんだ ぱっと見てどのオブジェクトに影響与えてるのかわからないのは確かにひどいけどな EXT_direct_state_accessが標準になれば楽なのに
>>472 複数のレンダリングパスを持つマテリアルをシェーダー1つで
レンダリングパス毎に異なる部分をサブルーチン化して実装してるのなら見たことがある。
みんなマルチパスが必要なシェーダーってどう実装してる?
>>475 なるほど
glGenTextureで作ったハンドルごとに設定されてるのか
それなら納得^^
TexParameterはテクスチャ一つずつの設定 TexEnvはテクスチャステージごとの設定 パイプラインをきちんと理解できてれば、覚えやすいと思うけど。
Quakeのマップエディッタはブラシって概念使ってたのでそれで理解できた あまり頻繁にブラシを切替えると効率良くないって脅されたけど 今はテクスチャバッファ上に乗っていれば切替えコストなんて無視できるのかな?
480 :
デフォルトの名無しさん :2011/09/16(金) 22:12:15.82
質問失礼します。 テクスチャーへ描画したいのですが、レンダーターゲットの変更が上手くいきません。 glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, uinFboID ); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); //バックバッファをクリアする色の指定 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //バックバッファクリア レンダーターゲットへの変更部分なのですが、glClearでエラーが出ているようです。 glGetError()で調べた所、エラーコード 1286 が返ってきました。 (このコード直前はエラーコード 0 で問題ありませんでした) どうやったら解消できますでしょうか? 分かる方、よろしくお願いします。
FBOのカラーバッファとデプスバッファは設定した?
482 :
480 :2011/09/16(金) 23:00:44.27
>>481 返答ありがとうございます。
デプスバッファサイズとカラーバッファサイズが違ってました><
スレ汚しすいませんでした。
C言語、OpenGLの初心者ですが、質問です。 glutpostredisplayを使って、ディスプレイのコールバックを呼び出して再描画するように、 resize関数内のgluperspectiveを更新を促すようなものはありますか? 変な説明になってますが、分かる方教えて下さい。
gluPerspectiveをresizeの中でやるのをやめて、displayのコールバックの先頭でやるようにすればいいんじゃね
gluPerspective()はGL_PROJECTION行列を変更するだけなのでもう1度呼べばOK.
質問です。 テクスチャーの特定の"色"を透明にする事は可能ですか? α値を用いてアルファブレンドやアルファテストで抜く方法は分かるのですが、 α値が1.0で特定の色だけ抜く方法が分かりません。 アルファテストならぬカラーテストみたいなのがあったら良いのですが。。。 お願いします。
シェーダー使えばできる。 使わないならできない。
489 :
483 :2011/09/17(土) 11:11:10.22
>>484 gluPerspective(45.0, (double)width / (double)height, 0.1, 100.0);
という感じで引数を用いているので、displayに持って行くとエラーになっちゃいます…
>>485 もう一度呼ぶとはどういうことですか?
無知ですみません。
widthとheightぐらい保存しとけや。 っていうかdisplay()関数の中で毎回gluPerspective()を呼ぶ必要はない。 必要があることもあるけど、お前には多分必要ない。 お前はする必要のないことを心配している。
491 :
486 :2011/09/17(土) 14:14:40.97
初対面の人間に「お前」っていうのは人としてどうだろう
2ch の中で「お前」と言われても別に何も感じない たとえば仕事で初めて出会った人に「お前」と言われると、 態度悪いなと感じる
2ちゃんねるでそれを言うのかお前は
お前お前言ってると 492 が憤死するぞ
あなたには必要が全く無さそうなことですが、無駄な心配をされていませんか? 慇懃無礼な方が効果の出る場面もあるな ていうかスレチだぞテメーら
おいお前ら元気そうでなによりです
498 :
483 :2011/09/17(土) 16:27:51.35
>>498 resize呼ばれたときにwidth/heightを覚えといてgluPerspectiveを呼びたいときにはそれつかえばいいいだろ
500 :
483 :2011/09/17(土) 16:52:04.73
>>499 width/heightを覚えるってどうやるんですか?
あと、gluPerspectiveはdisplay内に入れていいんですか?
本当にバカらしい質問かもしれませんが、お願いします。
いや、それ、その先に進めないだろう。。。
>>500 それはopenGLの質問ではないので、c++かcのスレでどうぞ。
何で基本やらずにいきなり3Dなんだよ・・・・
大物感がハンパないw
505 :
483 :2011/09/17(土) 22:09:55.92
初歩的な質問し過ぎですよね。 もう少し質問できるレベルになって分からかったらまた来ます。
多分、「こういう時は、とにかくこの関数をこうしろ」 とか 「これをコピペすれば、大体動く」 とか そういう状態なんだろうな。 一旦戻って、基礎飛ばさないで真面目に、せめて普通にコード書ける状態になってからくるべき
うるせーバカ
508 :
483 :2011/09/17(土) 23:46:04.37
>>506 まさにそんな状態ですね。
基本を押さえられてないんで、しっかり勉強します。
510 :
デフォルトの名無しさん :2011/09/18(日) 22:31:45.17
今までプロファイルをvp40決め打ちでやってたんだが cgCreateProgramFromFileでCGprofileをCG_PROFILE_GPU_VP にしたらハードウェアスキニングが崩壊した・・・ 一体何が変わったというのだ・・・
しょうもない質問だけど、よろしいかな。 最近GLSLの勉強を始めたんだけど、シェーダプログラムって 用途ごとに何個も別々に用意して作っていく、ってのが正道なんでしょうか。 たとえばテクスチャとポリゴン色の合成方式を乗算から加算にするとかの些末な変更でも それぞれのケース毎にフラグメントシェーダを用意するのかな、と。 条件分岐も考えたのだけど、それは速度的にどうかという気がするので… 環境はGLES2.0/GLSL ES1.0です。
>>511 俺なら別に用意する
1つ作って、あとはそれコピペして一部改変、みたいな
そんなに速度気にしなくてもいいぐらいの描画内容なら、1つにまとめて中で分岐するけど
正道とかそういうバカみたいな話じゃなくて、 どういう都合だからどうしたいって言う、自分で判断する事だろ。普通に
>>512-513 成程、つまりそういうスタイルも普通にあり得るということですね。
巷のサンプルとかは大抵1コード1シェーダで解説してるので、実際に運用する時の扱いが結構気になってたんですよ。
何にしろおかげで迷いが取れました。ありがとうございます。
分岐とか繰り返しはCPUに比べてGPUは苦手だから負荷が相対的に大きいんだよな。だから1つの機能を1つのシェーダーで実現しているものが多い。 ちなみにOpenGL4(からだったっけ?)のシェーダーサブルーチン機能を使えば、比較的低負荷に機能の分岐ができる。
OpenGLのテクスチャについて質問 glGenTexture(1, texture) → texture = 1 glBindTexture(GL_TEXTURE_2D texture) glTexImage2D( …, image1) glGenTexture(1, texture) → texture = 2 glBindTexture(GL_TEXTURE_2D texture) glTexImage2D( …, image2) ってやった後 glBegin(GL_POLYGON) glBindTexture(GL_TEXTURE_2D, 1) : (テクスチャ1) glEnd glBegin(GL_POLYGON) glBindTexture(GL_TEXTURE_2D, 2) : (テクスチャ2) glEnd ってやるとテクスチャ1の部分にもテクスチャ2が貼られるんだけど 何か間違えてる?もしかして毎回glTexImage2D呼ばないといけない?
glBegin ~ End の中で glBindTexture が使えるなんて妄想どこで拾った
>>517 ありがとうございました。解決しました。
質問よろしいですか? 三次元ベクトルをリアルタイムで表示することはできますか? 目的としてある並んだ黒色マーカの移動量をベクトル表示したいと考えています。 ここでの移動量はマーカの初期位置とある時間でのマーカ位置の差から三次元の位置差を計算した値です。 @カメラから画像をとりこむ A処理 Bベクトル表示 の三段階をループすればいいとおもうのですが、ループがうまくいきません。 @,Aはopencvを用いています。 openglの関数ではglutmainLoopを用いています。これがまずいのでしょうか。 初心者なため、これといった根拠のない関数を使っているとおもいます。 三次元ベクトルをリアルタイムで表示できればいいので 最適なものも含めアドバイスお願い致します。
>>519 OpenGLで三次元ベクトルをリアルタイム表示はできます。
そういうことするためのAPIです。
しかしながらループがうまくいきませんだけではそれ以上のことはわかりません。
上手くいってないところをもうちょい詳しく書くとアドバイスできるかもしれません。
詳しくをどうかけばいいのかわかりません。 @ABをwhile文の中に書いています。 本来なら、終了条件を満たすまでループすると思いますが、最初の画像をとりこんでグラフを書いたところで次の画像が取り込まれず、待ち状態になります。 グラフのウインドウを消せばプログラムが終了します。 カメラを使った簡単なサンプルプログラムがあれば嬉しいです。
訳「OpenGL も OpenCV も GLUT も分かりません。手取り足取り教えてください」
確かに、その訳は正しいのかもしれません。 OpenCVで取り込み、処理するまではできています。今、出力をテキストにだしているものをグラフ化したいのです。 お願い致します。
>>523 glutmainLoop 関数の振る舞いを調べてみろ
ググれば簡単に分かるはずだ
そうすれば、なんで while ループが回らないのか理解できる
まずはそこからだ
ちょっと先走って言うと、そういう処理には GLUT は不向き
OpenGL を直に叩くか、あるいは GLUT の代わりに GLFW なんか使うといい
>>524 やっぱりそうなんですか。
glutmainLoop はループをし続けてウインドウを閉じた時、プログラムを終わる関数ですよね?それでglutmainLoopを抜け出す為にfreeglutのglutmainReleaseLoop関数をあるんですよね?
これ以外の方法とりたかったんです。
GLFWですか、あたってみます。
glutDisplayFunc(disp); と書いたなら、void disp()の中を弄るんでないかい?
>>525 glutMainLoop()はイベントの発生を監視しつつループする関数
それ以上でもそれ以下でもない
GLUTでやるなら、基本的にはループ自体はglutMainLoop()任せで
各種のglutXXXXFunc()に登録したイベントで処理をするんだよ
定期的に処理させたいならglutIdleFunc()とかglutTimerFunc()とかで
定期的に呼んでほしい関数を登録する
GLSLの質問なんだけど良いですか? glGetAttribLocation, glGetUniformLocationなどで指定するリソースインデックスの値を固定することってできる? HLSLやCgだとセマンティック名なんかで固定できるんですが。 あと、どういうパラメータがシェーダに入っているか調べる方法はあります? Cgでいう所のcgGetFirstParameterとかみたいなAPIがあると良いのですが。
>>528 attibute 変数のインデックスは glBindAttribLocation で変更できます。
uniform 変数はたぶんリンカーが決定したロケーションしか使えません。
attibute 変数の列挙は
GL_ACTIVE_ATTRIBUTES, GL_ACTIVE_ATTRIBUTE_MAX_LENGTH, glGetActiveAttrib
uniform 変数の列挙は
GL_ACTIVE_UNIFORMS, GL_ACTIVE_UNIFORM_MAX_LENGTH, glGetActiveUniform
531 :
デフォルトの名無しさん :2011/09/22(木) 09:51:40.99
GLSLの中でlocation修飾子をつけるとできるぞ。 layout (location = 3) oin vec4 VertexNormal; ただ番号で管理するより名前で管理したほうがいいと思うが... サンプルなんかではコードが単純になるぶん番号を直叩きしたほうがいいかも。
532 :
531 :2011/09/22(木) 09:53:04.23
oinって何だよ。inな
>>531 ありがとう、GLSLの仕様書もう一度真剣に読んで見るよ。
おっしゃるとおり、名前で管理したほうが堅牢だと思います。
534 :
531 :2011/09/22(木) 11:29:38.08
NVIDIAやATIのGLSLの実装のドキュメントない? 具体的にはnoise()関数が実装されているかどうかが知りたい。 うわさではされてない。
笑
NVIDIA、初期の実装ではnoise実装されてないってどっかに書いてあったけど、 今はどうなんかねぇ。 試してみるのが一番なんだろうけど試せる環境にない。
Radeonも昔(X600とかのころ)も実装されてなかったな。常に1.0か何かが返ってきてた。 最近はどうだろうなぁ。
初期の頃は必ず0.0が帰ってきたな。 その後実装されたという話は聞かないので今でもされてないと思う。 どうでもいい勝手拡張は”実装しました!!”とか書いてるけど 肝心な情報は書かないからな。実際に読んでみるのが一番だが 全部の機能を自分で試せというのも乱暴な話だ。
まあそのへんはGLに限った事じゃないけどねぇ…>肝心なことは書かない
540 :
デフォルトの名無しさん :2011/09/24(土) 14:42:43.53
点(ポイント)スプライトでテクスチャを回転させる方法はありますか? もしあれば方法を教えてください。
541 :
デフォルトの名無しさん :2011/09/24(土) 14:49:50.74
>>540 質問の仕方を訂正します。
点(ポイント)スプライトでポイントごとにテクスチャを貼り付けて(つまり自動でリピートしないで)、その個々のテクスチャを任意に回転させる方法はありますか?
(普通の三角形ストリップにテクスチャを貼り付けるのと同様に)
もしあれば方法を教えてください。
よろしくお願いします。
シェーダー使え
やったことないからわからんが、テクスチャ行列使えばいいんじゃね?
それか
>>542 が言うようにフラグメントシェーダでテクチャ座標回転させる
そこまでやるなら普通にポリゴンに張った方が速い
自分で試したことはないがテクスチャーマトリックスに回転行列をセットすればいけるだろ。
俺もそれ試したが 確かVS3.0縛りになったはず
floatフォーマットのテクスチャをシェーダに渡して云々って、 いまの一般的に出回ってるグラボで普通に動くんだろうか …一般なグラボって言い方が曖昧で申し訳無いんだけど
一番一般的って言うとマザボ内臓の640x480のかな
だいたい今のグラボなら動くと思けど、ARB_texture_float がサポートされてるなら。
追加ドライバ無い状態のVGAか ってそこまで遡らんでもええやろ
そうか、世間の3D画像表示させたい人達は、マザボ内蔵の640x480が普通なのかってなんでやねん
さすがにそこまで古いとwin7も動かないだろ・・・。
もうそろそろOpenGL 4.0を最低環境にしてもいいだろう
APUが普及すればそういえるかもしれん。
Androidのタブレット端末のGPU性能がXBOX以上ってマジか すごい時代になったもんだ
初代XBOXの事を指しているなら別に不思議でも何でも無いだろ
不思議なんて言ってないけど すごいって書いてるの読めない?
不思議でも何でも無い = たいして凄くもない というニュアンスかと
>>557 (Xbox以上なのは)不思議でもなんでもない
だろ
日常会話レベルだけどお前日本語大丈夫か?
どう考えても大丈夫じゃない。
「Androidのタブレット端末のGPU性能がXBOX以上って本当の話かよ。 まったく時代の進歩は凄いな。驚くばかりだ」 「その話のXBOXって、最新の機種じゃなくて初代の事か? もしもそうならば、驚くような事じゃないだろ」 (=初代機の性能は、そんなに高い物じゃないと言いたい) ただのこういう会話だと思ったのに、 「不思議なんていってないけど、すごいってかいてるのよめない?」 なんだよこの流れ。子供でも混じってんのかwww
子供と言うよりコミュ障
最近は完全に字面通りにしか解釈しないやつが増えた気がする。 喩えとか皮肉とかまったく通じない。
板的に理屈っぽくて融通きかないのが多いんだろう。
理屈っぽくて融通きかない振りをし、相手をおちょくって楽しむ奴が多い 本当は分かってるはずだから無視すればいい
>>566 お前優しいな。最近は想像を絶する無知ゆとりも増えてんだぜ
本当はわかってるはずと見せかけて、さらに本当に何も知らないわからないバカもいるんだぜ
XBOXの性能を持つ携帯端末は十分凄いと思うがな 1万5000円程度で買える中華パッドでさえ物凄いポテンシャル秘めてるし
どうでもいいけどお前ら一度スレタイ音読してみろ
そもそも凄いとか凄くない、みたいな個人の主観でしか語れない話に結論をつくろうとするからおかしくなる。 そうだね、おれはそうはおもわないけどひとそれぞれだよね。これで終わりにすればいいだけの話
また方向性の違う変なのが来た
たまにスレが進んでいると思ったらこれかよ...
574 :
デフォルトの名無しさん :2011/09/26(月) 07:38:33.04
>>542-546 みなさんありがとうございます。
iPhoneでES2.0より前でやっていますのでシェーダは使えません。経験もありません。(始めに書くべきでした)
でも今後機会があったらトライします。
結局
>>544 さんが言うように、VBOで一気に glDrawElements(GL_TRIANGLE_STRIP,...); &レンダリングした方が速いようです。
575 :
デフォルトの名無しさん :2011/09/26(月) 08:00:30.87
>>542-546 >>574 の補足です
テクスチャ行列で回転させるのと、頂点を回転(行列とコード上で直接計算両方)させるのとをやってみましたが、どれも速さは変わらないようでした。
体感やiPhone SDKに付属の"OpenGL ES Performane Detective"というツールで見る限り
もっと切れの良い動きを期待して点スプライト(ES2.0機能の一部使えたので)での件質問したのですが、まこれでも十分かという感じです。
時期を見てES2.0へ移行したいとも思います。
ありがとうございました。
vertex_saderを使おうと思うんだが(programじゃないほう) intelのオンボードは結構最近のまでサポートしてない。 ドライバをMesaにでもしたら対応してくれるだろうか
独り言はチラシの裏に書いとけ、なっ?
ここがチラシの裏だ!
表はどこですか?
>>576 ProgramじゃないVertexShaderってなんだ
あ、それやっぱ疑問なんだ 俺の見識が足りないのかとw
あぁ多分
>>576 をエスパーすると、
「プログラムを組む類の話では無いんだけど(と言う前置きで)、
intelのオンボードグラフィクス機能は、最近の物でも VertexShader に対応していない。
ドライバを他に変えたら、動くものなんだろうか。
(例えば、Mesaに買えたら、VertexShaderに対応していないチップでも、それが使えるだろうか) 」
って、聞きたいんだと思う答えは無理だろばか。 以上
固定頂点シェーダーのことかも それが何かは知らんが
vertexshaderの時点で、すでにプログラムな件について
>>583 "固定パイプライン"って言葉とごっちゃになってるだろww
あれは予め用意されてて、隠されたシェーダ処理だよ
>>584 プログラマブルシェーダーに対して、
PICA みたいなのを固定機能シェーダーと言うこともある
つまり
>>576 は、プログラマブルじゃない方のシェーダに対応してないintelのオンボードで、って言ってるのか
プログラマブルじゃないシェーダ=固定機能シェーダに対応してない時点で、そもそもシェーダ自体対応してないって事になる?
だとしたら、(programじゃないほう) とか言う必要なかったよな
チンパンジーの考えることを推測するだけ無駄
チンパンジーの考えることを推測する学問がある
俺はglCreateShaderでシェーダオブジェクトを作るが glCreateProgramを呼ばずにNASAの開発した最新技術を使って シェーダオブジェクトをbindしておうという事かとエスパーしたが 大誤算のようだったな。
apiレベルで使えるか使えないかだけで directx ならオンボでも hlsl は動きますがな まぁ opengl グラボの依存性高い印象はあるからその辺動かんかもしれんけど
機能がグラボに左右されるとか使えないよ openGLにはDirectXのHELみたいなのないの?
>>580-589 がネタなのかマジで言ってるのか分からん・・・
>>576 が言いたいのは、ARB_vertex_shaderが使いたい(ARB_vertex_programじゃないほう)って事でしょ。
お前よくわかったな
アセンブリシェーダしか使えない環境だったらCg使うのが楽じゃないかな
595 :
片山博文MZ :2011/09/27(火) 11:01:05.93
1.アンチエイリアスの利いた日本語文字列を出力するにはどうすればいいですか? 2.円や楕円を描くにはどうすればいいですか? 教えてください。
>>595 どこで詰まったの?
テキストの件は環境によるとして、円や楕円なんて単純に計算してLINEでも引けば
Windows前提でお願いします。 アンチエイリアス&αブレンドが掛かった日本語文字列を出力する方法はありませんか?
その辺は、方法って言うより、そういうロジック書けって話だなぁ winでテキストなら、きっと必要になる関数は wglUseFontBitmapsW で、あとは wglGetCurrentDC CreateFontW ※win32API とかかな。αブレンド云々は、普段3D処理書くときの要領で
早まって自決しちゃったか・・・
最近OpenGLに入ったGeometry Shaderって名前がおかしくないか? プリミティブ全体にアクセスできるシェーダーなんだからPrimitive Shaderの方が正しいと思う。 シェーダーの名前付けはプリミティブ、バーテックス、フラグメントと適応される場所でなされていると思っていたのだが... (ただ理想的にはジオメトリー、マテリアル、ライティングみたいに処理内容で名前をつけたほうがいいと思う)
Primitive Shader って書かれたら、どういう原初的で初歩的なシェーダなんだ?って思うんじゃね? 英語圏の言葉的な意味で。 なので >プリミティブ全体にアクセスできるシェーダーなんだからPrimitive Shaderの方が正しいと思う。 これだけは無いわ。もうちょっと考えてよく観察してから言ってくれ
603 :
576 :2011/09/27(火) 12:23:33.47
質問の仕方が悪かった。
>>592 フォローthx。
拡張機能のARB_vertex_saderを使おうと思うんだが(GLSL)
intelのオンボードは結構最近のまでサポートしてない。
ドライバをMesaにでもしたら対応してくれるだろうか。
vertex対応でfragment非対応とかいう変態でもMesaで対応できるんだろうか。
拡張機能全滅のグラボでもMesa入れたら2.1までの機能全部使えるようになるんだろうか。
もしそうならCgはMesaと変わらん
というかCgは将来削除されそうでそっちのほうが怖い
vertex_programも現状ほぼ無視されてるからなあ
>>602 普通はプリミティブで「基本的な構成要素」と解釈される。
お前がなぜそんなに顔真っ赤なのか理解不能
>>604 なんで顔真っ赤にして言い返してきてんだよw
OpenGLの話でプリミティブって出てきたら、点とか線とか三角とかの事を思い浮かべるかな。
607 :
576 :2011/09/27(火) 12:44:46.36
>>603 CgはOpenGLの機能じゃないのね
DirectXでも使えるのはいい
でもARB_vertex_programも動かない環境ではどうなるんだろう
OpenGLは当初はプリミティブシェーダーの計画だったけどDirectXに合わせてかジオメトリシェーダーになったな。 テッセレーションステージのシェーダーは、ハルシェーダー、ドメインシェーダーがそれぞれテッセレーションコントロールシェーダー、テッセレーションエバリュエーションシェーダーになってDirectXとは違っているが。
>>607 Cgは結局のところCg言語から他のシェーダ言語へのコンパイラだから全くシェーダが無い環境では当然動かない
ソフトウェアレンダラが欲しいというならOSMesa使え
ただしまともに使える速度では動かんぞ
多分初歩的な質問だと思うんだが、大量のデータ(100万データ程)で描画すると、 POINTSとかTRIANGLESとかの各描画モード間で描画速度に差がでる POLYGONがTRIANGLESとかより速度が遅い理由はわかったんだが、POINTSがTRIANGLESより遅くなる理由がわからなくて困ってる ※描画速度に関してはディスプレイリストを用いて再描画した時の速度のことに限定してる
でぃ、ディスプレイリストですか
初心者なもんで見当違いなことを書いてたらすまない 因みにLINEもTRIANGLESより遅い グラボ内での処理の違いによるものなのかな
陰面消去しないからじゃね
>>605 ここにもいたのか麻雀スレのかわいそうな子
>>615 なるほど、透過した際の処理が絡んでくるからか
ありがとう
>>617 透過は関係ない、面であれば普通裏むいてりゃラスタライザ前で捨てる
>>616 なんだよそれ。シャドーボクシングならよそでやってくれ
論文(*1)読んでたらバーテックス・シェーダーだけでテッセレーション・シェーダーもジオメトリー・シェーダーも使わずに テッセレーションできる方法が実装できてすぐにも実用できそうなんだけど そういう話を聞いたことがないのは誰も注目してないの? *1 Geometric Mesh Refinement on GPU, Boubekeur & Schlick
今はJOGLってダウンロード出来ないんですかね? リンクが見つからなくて・・・
GL ES2.0の本にuniform変数はvec4*128個がどのハードウェアでも最低限サポートされてるって書いてあるけど 2011年になって256個に増やされたとかいう事は無い?
この本ってどう? Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL (6th Edition) [ハードカバー] Edward Angel (著), Dave Shreiner (著) 値段が値段(9458円)だけに買うのがためらわれるんだけど、値段分の価値はある? OpenGLの基本的なことは知っているので応用がしりたい。
ここで聞くより海外の書評を見たほうが早い
全頂点に対して実行するとシェーダー処理が重すぎるので、 視界から見える可能性のある頂点だけピックアップして行ないたいのですが、 この「見える可能性のある頂点」を高速に判定するにはどうすればいいでしょうか?
そもそも頂点シェーダーで見え方のコントロールを行うんだからそれは無理。
CPUの方が空いてるならスキニングとか裏ポリカリングはCPUでやってしまうとか、 簡易モデルでオクルージョンカリングするとかかな
629 :
626 :2011/10/01(土) 23:27:56.94
一度全部レンダリングして最終的に描画されたピクセルから そのトライアングルの元になった頂点を求める方法がベストなんですがどう考えても難しいです。
>>629 「レースが始まる前に一度競馬の結果を知る事が出来れば、
効率よく当たり馬券を得られるのですが、何か良い方法が無いですか?」
と質問した?
>>626 事前にプリミティブの頂点が全て収まる球を CPU で計算しておいて、その球が視体積と
交差する可能性がなければそのプリミティブに対する描画コマンドを実行しない。
632 :
626 :2011/10/02(日) 12:27:52.20
Zテストで落ちる頂点も取り除きたいです。 1 頂点ごとに固有のIDを頂点Attributeで送る 2 ジオメトリーシェーダーでピクセル毎に3頂点IDを複製する 3 最終的に残ったZバッファーのピクセルを見ると元になった頂点IDx3がわかる 4 Zバッファーから全ての頂点IDを取得してソートして重複を取り除けば完成 というアルゴリズムを考えたのですが、どう考えても4が実用的でありません。 できればジオメトリーシェーダーも使いたくありません。
>>632 当然オクルージョンカリングを試した上での発言だろうな
>>632 コンディショナルレンダリングを使うのは検討した?
取引先に荷物をオクルージョン
636 :
626 :2011/10/02(日) 14:31:22.25
>>644-634 はじめて知った\(^o^)/
え、何これ凄い便利そうなんですけど
3回レンダリングするのが少し気になりますがこれ使えばいけそうです
角とパンチパーマがないとドーモ君という事が判明
GL_TRIANGLESで作った多面体をマウスでクリックした面の色を変える という事をしたいのですが、どうやったらいいですか? 詳しく紹介されているサイトがありましたら、教えてください。
それは2回レンダリングするといい
>>638 マウスで画面上の座標をクリックした時、そのスクリーン座標 x, y から、三次元空間で向いてる方向に
まっすぐ線を延ばして、その伸びた線分と最初に交差する面を計算して特定しておいて、
あとは通常通り、メッシュをdraw&その特定した面を構成する頂点位置と、まんま重なる別のポリゴンを重ねて描画
※ただし完全に同じ位置に描画するとモアレみたいな状態になるので、わずかにカメラ側のベクトルに移動させて描画
とかが、ぱっと思いつくベタな方法。勿論他にもやりようなんて都合と工夫次第
opengl3.0からは glBegin,glEnd,glVertex3fとかの固定機能系はdeprecated となってるそうですけど、 やはり積極的にシェーダ利用の描画に乗り換えていくべきですか?
正直その辺は動かしたい環境次第かと。
好きにしたらいい
>>640 ありがとうございます。
とりあえずその案でやってみます。
>>640 逆に各三角形をスクリーン座標系へ座標変換してからスクリーン座標系で
マウス位置と重なっているか計算するという手もあるぞ
OpenGL ES2.0の入門サイトでおすすめのサイトはありませんか? Android SDKと一緒に使おうと思ってます
>>648 デビットカードの残金が切れていてamazonで買い物ができないんですが分かりました
代引きで頼んでみます
OpenGLの凄い本を教えてください。 エキスパート向けの高度なテクニックをわかり易く解説している本がいいです
本を探すより、SIGGRAPH の会員になって仲間と交流した方が早いと思う
>>650 最強の怪獣を教えてください
すごい強いのがいいですって、言った?
>>650 エキスパート向けの高度なテクニックって、基本的にその前提になる
別の高度なテクニックについて、予め知識がある人向けわかり易く解説してる物だから、
「凄い本おしえてください!」 とか言ってるような初心者では、多分、全然わかり易くはないと思うよ
例えばC++のイディオム集みたいな物があったとして、そこで高度なテクニックがわかり易く紹介されてたとしても、
そもそもそれを理解する為の C++ の高度な使い方知ってなかったら、何を話してるのかすらわからない、みたいな
ゴタクはいいのでよろしくお願いします。 例えばdeffered renderingしたいけどMSAA効かないよね ⇒ そうだあれしよう(ぴこーん!) みたいなのお願いします
>>655 そういう用途なら、Googleが最適じゃないの?
駅すぱあとがOpenGL対応ときいて。
>>655 最新のものを知りたいならGDCとかSIGGRAPHの発表資料とか論文見ろ
さらにそこから参考文献探し出せばよい
あとOpenGLに限らずDirect3Dの資料も読め。どうせやってることはかわらん
出発地 OpenGL 2.0 目的地 WinG 経由地 DirectX 11 表示順序 乗換回数順
俺DIBSectionで3Dエンジン作るわ
>>660 DIBセクションって、DIB形式画像のヘッダ部分だと思うが
OpenGLのアニメーションで、 人間や動物が手足を動かすものを 作る方法について書いた本やWebのページは あるでしょうか。 ロボットが手足を動かす例はみつけましたが、 ロボットを九体や立方体に分けて別々に 動かすというもので、人間や動物のように 柔らかいものについては使えそうには ありません。 よろしくお願いします。
いわゆるスキニニングとかボーンアニメーションとか言われる奴だな ジェイソングレゴリーのゲームエンジン・アーキテクチャに詳しい 俺はそれで勉強して実装した ゲーム作るには必須の技術だが日本語で読める解説書は無きに等しい
あれみて実装するやつなんているのかw OpenGL ほとんど関係ないしMMD周辺調べてみたら?
OpenGLのサンプルにスキニングなかったっけ それでええやん?
なんでMMDとかそこで出てくるんだよww なんでやねんだ。
>>662 その立方体や球体に分けて関節表現、が本当にわかってて、
読んでわかったとかコピペしたら出来た、とかでないなら、
後はどうすればいいか、とりあえず気づくと思う。
要は、 「ボーンの移動や回転に合わせて単純に位置更新、が、出来ない頂点」 に視点を向けろ
そこがどうなればいいかわかれば、後は簡単だから。
単純移動出来ない頂点は、どちらかに何パーセント移動し、
他方に何パーセントか移動する訳だから、それを計算しろ。
単純にとある面を構成する頂点が、全て同じボーンに含まれるなら、それは形は変わらず、
面が回転移動するだけだけど、 そうでない 「単純に更新が出来ない、変形する面の頂点」 は、
どう計算したらいいか、って話。 その観点に視点を向ければ楽勝。簡単なこと
後は簡単だからと言われても 原理はともかく実装はノウハウの塊だからなぁ mikoto互換から始めたけど未だにmikotoの品質を超えられない
+π|-π +0|-0 の角度を +π|+0 -π|-0 に変換するスマートな方法ってある?
>>669 元コメで欲されてるスキニングの変形方法について有為な情報が皆無だからじゃねーの
674 :
664 :2011/10/16(日) 23:24:17.76
>>667 お前がスケレタル・アニメーションについて理解してないことがよく分かった。
恥をかくだけだからもう発言しない方がいい。
>>670 床井先生には申し訳ないのだが、この説明で初心者が理解できるだろうか?
ゲームエンジンアーキテクチャーを読んだほうが100倍良くわかるはずだ。
床井先生にはいつも感謝してるが、世界最高の良書と比べるとやはりわかりにくい。
というわけでこういうゲーム作りの基本情報がネイティブ言語で読めないというのは日本の国益に非常にダメージを与えている。
国は床井先生に金を払って書き直してもらうべき。
あと最新のテクノロジーを詰め込んだ国産のオープンソースのレンダリングエンジンがないというのは良くない。 床井研究室主導で一発凄いのを作ってもらえないだろうか。 ソースだけじゃなくドキュメントも豊富に揃えて。 例えばスタンフォードのPBRTとかが理想。
>>672 意味が分からん
縦棒の記号はなんだ?
なんで上下2段になってる?
+0 と -0 は IEEE574 のゼロ表現のことなのか?
それ別に国産にこだわる必要なくね
lucilleとかはもう開発とまっちゃったみたいだしなぁ。
>>678 そうなの?HP見るともうすぐ製品リリースっぽいけど...
ゲームエンジンアーキテクチャーって前半部の線形代数の部分は素晴らしく自然な日本語でわかりやすいけど 後半の微分あたりから急に硬い理系の教科書みたいな意味不明な文章になって読む気無くすよね 3D数学本の訳者は日本語が上手い人間にするべきだよね
自分が英語上手くなるべきだよね
こりゃ一本!一本取られた!
俺は日本語版が出る前に英語版を読んだ 今までは無条件に勧めていたけど、翻訳の質がよくないなら考え直さないと...
あの本アニメーションの部分以外目新しいトピックはないよね
質問 Light Pre-Pass Renderingの性能上の利点ってどこにあるの? 実装上はライティングの計算がシェーダーから分離してくれるのでありがたいけど、 普通のForward Renderingに比べて利点はそれだけな気がする。
>>682 取られてない。
翻訳の日本語が悪いのは事実なのだから単なる話のすり替え
687 :
667 :2011/10/17(月) 22:51:31.84
>>674 いや、お前は何もわかっていない。言葉だけでわかったフリしてるだけの、ただのマヌケだ。
知ったか厨二病乙
俺は自分で実装してるよ
喧嘩すんな
反論できなくなったら発言者の人格を攻撃したり挑発を始める 証明できない事実を並べたり、関係ない事実を述べたりする
>>674 > お前がスケレタル・アニメーションについて理解してないことがよく分かった。
割り込みでスマンが、言ってる意味がよく分からない
その反論をもう少し詳しく教えてくれないだろうか
というのも、
>>667 が言ってることは、やや大げさな言葉使いは別にして、
至極まともなことを言っているように感じる
>>662 のようなスキンメッシュやスケレタル・アニメーションなどの言葉も知らない人に、
一つの頂点の位置を複数のボーンの座標変換の合成によって決定するという、
スキンメッシュの単純な本質に目を向けさせ、まずは自分で考えさせるのは
理解させるひとつの方法だと思う
これが本質であることは
>>674 も同意見だと思うが、違うのだろうか
どのサイト、本にも載っている基礎中の基礎だと思う
ただまぁ、質問者は本やWebのページを求めているので、
質問の趣旨からは外れているわけだが
>>667 を読んでみると
MMDに対するツッコミは別におかしく無い
その後読みにくいけど頂点ブレンディングについて書いてる
>>674 そこから
>>674 が言うようにスケルタルアニメーションを
理解できてないにどうして繋がるか俺には分からん
>>687 はスキニニングとかのタイポにたいする皮肉と思われる
なぜファビョったかは不明
第三者的にはまじで意味が分からない
分からなくても別にどーでもいい。
悔しがりすぎw
>>667 を自分で読み直してこれで他人に意図が伝わると思うか?
思わないだろ?
他人が理解できるように説明できないということは、理解してないということ
>>667 の文章を読めば、ああこいつ理解してないなと思うは当然
他人にスケレタルアニメーションを説明するにはまず第1にスケルトンが階層構造のボーンと、
ボーンに関連付けられた頂点(スキン)でできてることを説明する。
そしてボーンを動かせばそれに追従してスキンが動く事を押さえる。
この時1つの頂点が1つのボーンにしか追従しないと関節部分が割れたりするので
通常は1つの頂点が2つ(以上)のボーンに関連付けられていて、なめらかに遷移するように両者がブレンドされる
くわしくはゲームエンジンアーキテクチャーに全部書いてある。
床井先生のページの説明も気に入らないし、俺は日本語で読めるスケレタルアニメーションの全ての説明が気に入らない。
何で日本語の資料はこんなにそろいもそろって酷いんだ。
みんなまともな資料を読んだことがないから
>>667 みたいに自分は理解していると思って馬鹿げた説明を繰り返す
くっだらねぇ
あとスケレタルアニメーションの数学的なキモは ボーンのローカル座標に落とすところな これが全てのトリックの根幹 最終的にはボーン行列をかけるだけの処理だが 以外とそこに至るまでの仮定は奥が深い そのギャップが一番面白いところで、そういう面白さに気がつかせてくれるのがいい教師
>>696 ひっこめゴミ
自分が場違いなところに書き込んでいることを理解しろ
たかが実装手法でずいぶん勝ち誇るなw
700 :
デフォルトの名無しさん :2011/10/18(火) 19:24:48.66
すいません 質問です。 Visual C++2010でopenglを動かしているのですが、openglで作ったアニメーションを動画キャプチャしたいのですが、 やり方がわかりません。フリーの動画キャプチャを使ってみたのですが、openglの動きは反映されませんでした。 わかるかたよろしくお願いします。言語はC言語です。
702 :
デフォルトの名無しさん :2011/10/18(火) 19:39:03.24
このなかのアマレココを使ってみたのですが、ウィンドウの動きとかはキャプチャされたのですが、 その中で動いている点とかが最初のままで動いてないのがキャプチャされたのですが、 これは設定とかに問題があるんですか?
703 :
691 :2011/10/18(火) 19:57:49.87
>>695 あぁなるほど、言われればそうかも、納得しました
俺は自分が知ってるから無意識にそういう視点で読んでたけど、
確かに全く触れたことがない人にとっては、ちょっと分かりにくい文章ではあるな
ただ、質問者がロボットの手足を動かすことはできていることを前提にすると、
ボーンの構造自体は理解できている筈だから、それなら推測できるだろうとは思う
それを前提にすること自体が誤った推測かも知れんが
>>667 も理解してると思うよ
ところで
>>695 は、そこから「日本人が誰もやらないなら俺が解説を書いてやろう」
という発想には至りませんか? 応援しますけど
断言するが
>>662 のロボットに絶対にボーンは入っていない
ゲームプログラマーになる前に〜に適当に手足のパーツを動かした例がのっていたはずだがそのレベル
そもそも日本語で真面目にボーン入れて動かすチュートリアルを見たことがない
だったら、やはりスキンの前にボーンの基礎だな スキンはその後だ
本で読んだだけで、それでわかった気になる奴ほど他人を見下したがるもんよ でも実装経験が伴ってないから、 具体的な動きを書かれても意味がわからず、 「お前が何もわかってない事がわかった(キリッ」とか言って恥かくんだよ でもプライド高くてバカだから想像できないのw
なんかレベル低いな
>>700 WindowsVista以降ならデスクトップコンポジション切るといけるかもしれない
あまりプログラミング関係ないからソフトウェア板とかで聞いた方が早いかも
結論:スキンメッシュは天才しか扱えない
天才で片付けて思考停止するなよ
オープンソースの描画エンジンのコードがいくらでもあるだろ ogreとかirrlichtとか
それ以外で
日本人が作った奴でおねがいします
ソースコードに英語も日本語もないだろ・・・
俺は正しいコードを書いてるはずなのにいくら試しても正常に表示されないからスキンメッシュを投げたことがあるが、 3年後に再挑戦してクオータニオンの回転角の符号を反転させたら正常に表示されて3年間を無駄にしたことがある
つまり、俺でも書けるんだからスキンメッシュなんてそんなに難しくないということだ
717 :
デフォルトの名無しさん :2011/10/19(水) 10:40:21.10
>>715 =716かい?
1レスで書ける事を8分待たなきゃ書けなかった事をよく考えれば
3年て時間を無駄にした本当の理由が見えてくるんじゃ?
何でこのスレこんなに殺気立ってるの? 落ち着けよカスども
ゴミは揚げ足を取らないと精神の均衡が保てないから仕方ない
だからチキンって呼ばれてるんだな
マジチキン
それよりDeffered Renderingは有効かについて語ろうぜ! ちなみに俺はDeffered Renderingは時代遅れ派だ 欠点は - バンド幅を食いすぎる - MSAAが効かない - 半透明ダメポ - 変更に弱い(G-Bufferのデザインが全てに影響する) という理由からDeffered Renderingイクナイと思っている
deferred
>>715 >俺は正しいコードを書いてるはずなのに
2chでも、なんかやらかしてそうな奴だな
こんな抜けた奴でもできるスキニングなのに、お前らには出来ないから妬んでんの?
スキニングできないゲームプログラマって存在していいの?
いいんじゃない?
少しスレチだけど、スキンアニメにかかわらず 〜〜ができるやつは積極的にwebに情報配信してほしい
趣味プログラマーの彼女(19)からスキニングもできないの?って笑われた
結論:スキンメッシュはバカでも扱える ↓ できない奴はバカ以下 結論:スキンメッシュは天才しか扱えない ↓ できなくても仕方ないのさ 天才が謙遜するたびに挫折した奴が傷つくなら 天才を自称した方が綺麗に収まるんだよ 挫折してからできるようになった人も達成感を得られる できないくせに簡単にできると言ってる奴はただのバカだが
>>728 スキニングなんて20年前の技術なのに
なんでいまだにwebにまともな情報が無いんだ?
クソblogが氾濫したせいで埋もれてるのか?
てか十分あるだろ
ゲームプログラマーのためのフォーラム欲しいよね。 最新技術とか1人で全部追いかけるの大変だし 相談できる相手は社内にいないしどないせいっちゅうねん
やねうらお先生あたりがやってそうだが無いのか
まともなモーションがついたモデルデータが皆無に等しいからじゃね まあ今更頑張って書いたところで、素人が動かすMMDにも及ばんだろ 高度なはずの技術がツール使えば誰でもできることになっちまったw
十数前のム板で言うところのVB厨が今や開発者の主流になってしまったってことだな
つまり十数年前からム板に居続けてスキルの向上も無くスレで愚痴ってると?
>まともなモーションがついたモデルデータが皆無に等しいからじゃね 数年前までは割と深刻な問題で言い訳にも使えたけど、今はモーションどころか 剛体設定まで仕込んであるMMD用データがいくらでも入手できるからなあ
素人でMMDデータでopenglでスキニングしてるけどまじいい時代になったもんだ 物理演算とか使うとオンラインは厳しいからゲームには使えないけど
線形補間?ウェイト値?なにそれ MMD使ってちょちょっとやればいいじゃん プログラムできても大したことないね〜www そういう時代 数学なんて要らなかったんや
でもMMDしか作れないよね 箱庭から出るのが面白いのに
なんかレンダラの話になってないか? MMDデータをopenglで描写するエンジンを自作したいとかなら分かるが
使いたいモデル毎にパーサ書くのが面倒すぎる いい加減統一してくれ
そこで COLLADAですよ 流行る気配はないけどね
理念は分かるんだけど重い仕様だからなあ もっとコンパクトなサブセットないんかな、jsonとかで webglやflash11通して普及したりせんかなと
統一するとなると、どうしても今の最大公約数か最小公倍数になるしかないんだよね COLLADAは最小公倍数の方だね
やらない言い訳いらない
>>739 「オンラインは厳しいから」から「ゲームには使えないけど 」に俺の思考が直結しないんだけど
これってどういう意味?
オンライン=リアルタイムレンダリング オフライン=プリレンダリング ってことかな
プリレンダをオフラインレンダリングとか言ってたよな。
MMDレベルの物理なんて誤差の範疇の処理時間じゃん
>>722 素直に実装するとBRDFが固定されてしまう点以外は思ったよりいいと思う > deferred rendering
MSAAはDX11世代のグラボでは普通にサブピクセルで操作出来るから問題ないし、そもそもPC のパワーが増えてきたら下手にMSAA使うよりもその分解像度あげてレンダリングする方にパワー使ってFXAAとかの方が綺麗なケースが多い気がする。試してる限りでは。
DRに取って替わる手法とかあったら教えて欲しい。
CUDAやOpenCLのローカルメモリを使った実装なら、複数のライトを計算するコストに対してバンド幅も節約出来ると思う。 たくさんライトを出さない、BRDFをいろいろ変えてレンダリングしたい、とかならディファードレンダリングは向かないかもしれないけど…。
>>751 スカートが付いてるキャラとか
mob1対につき骨が200本くらいだったかあってそれぞれに剛体が付いてて
とてもじゃないが無理ゲーだった
細かいところまでやるならMMDでは足りなくなるから困る ボーンシミュは捨ててOpenCL格子シミュでもいいと思うけどまだ試してない 骨+モーションも後付けで拡張できるようにしたら 顔の表情や手の動きなんかも付けやすくなりそうだけど試してない できるならトゥイーニングは捨てれる 頂点の編集も手動でやるならツールに頼らなきゃならないし データも 骨+モーション 頂点 の二つに分けといた方がいいような気もする 頂点シミュレーション後にnormalを計算したいから テセ使いたいけどwebglでは少し足りないし まだ拡張の余地があるからしばらくは柔軟なフォーマットでやるしかないよ
要は妄想してるだけと
>>752 今1から実装するなら個人的にはLight Pre-Pass Rendering(Engel)を押したい
Deferred系レンダリングの一種だが上記の欠点(MSAA)を克服している
1パス目でG-Buffer(位置、法線)をレンダリング(Geometry)
2パス目でライトの放射照度(拡散光、鏡面光)をレンダリング(Light)
3パス目でもう1度ジオメトリーを送ってレンダリング(Geometry)
最大の違いは3パス目で、再度ジオメトリーを全部送っているのが無駄に思えるが
オクルージョンカリングを有効にしているのでたいしたコストではない
実際のところ3パス目でやっていることは通常のForward Renderingと同じで
その前にプリプロセスとして1パス目でZを、2パス目で放射照度をピクセル毎に求めているに過ぎない
Light Pre-Pass Renderingは各手法の”いいとこどり”で
ライト無制限、MSAA、オクルージョンカリングが使える
と思ってるけど実装したこと無いからここまで全部俺の妄想
>>757 自分はどちらも実装した上で書いてたんだけど、その二つなら作りたいものの都合に合わせて選べばいいんじゃない?って感じ。
MSAAの対処って基本的にディファードとライトプリパスで変わらないよね?
sampler2DMS使うみたいな。
全然違うだろ 3パス目はジオメトリーを書き込むからglEnable(GL_MULTISAMPLE)がそのまま使える Deferred Renderingの場合最後は1枚の板なのでマルチサンプリングしても意味がない
あぁ、理解した。Deferredから作り始めてたからライトバッファもMSAAにしてた。 Deferredの場合はGバッファがMSAAで書き込んでるから、リゾルブの時にMSAAテクスチャとして対処しないといけないんだ。
たぶんそこが1番違うね。マルチサンプリングテクスチャーを使う(Deferred)のと使わないの(Light Pre-Pass)。 世間ではDeferredでスーパーサンプリングせずにポスト処理でAAをかけるのが流行りっぽいけどよく知らね それは個人的には筋が悪いと思う。というわけで俺はMSAAが使えるLight Pre-Passを押すぜ あとどうでもいいがマルチサンプリングと言いつつ、やっている事はスーパーサンプリングなのはネーミングがおかしいと思う...
ここでMMDMMD言ってる奴等は、 やっぱ当然、クローンというか、それっぽいソフトは作ったことあるんだよな? モーションのフォーマットって、俺は自分の都合でべたに並べたけど 既存のフォーマットに揃えたりする?
>>751 bullet使ってコード書いたことあるか?
多分何も知らずにそのレス書いただろw
AAって言えばPractical Morphological Anti-Aliasingってどうなん? 論文には画質はx4~x8 MASSぐらいで10倍高速とか書いてあるけど それが本当ならMSAA切ってポストプロセスでやったほうが高速にできるはず ちょっと信じられない
>>764 FXAAの倍以上時間がかかるけど、処理時間を正当化できるほど綺麗とは思えないな。
実際に自分のコードにいれて見たらわかると思うよ。某MLAAのソースはサンプリングポイントがおかしかった気がするけど。
照明できない事実を出すような奴が何言っても説得力ないよね 認められたいなら実名でやればいいだけ、わざわざ匿名でする理由がない 他人を見下してバカにして優越感を得たいか またはそれをやってそうな人や会社の価値を落としたいか 見え透いている 技術者なら技術で戦うべき 政治力や金や社会的地位や口先で勝っても 技術者に敗北感を与えることは不可能
MMD関連の話題は、本やどこかのブログ読んだだけの知ったか厨房が 沸いてくるから禁止。 スレタイ音読して、せめてOpenGLの話にしてくれ。
bulletなんてライブラリ落としてビルドしてチュートリアル計測すればパフォーマンス把握できる MMDがなにやってるかはデータフォーマットみればわかる その程度も理解できずに偉そうに語ってたの?
文を見れば目的もわかる 他人を見下したがってるのがよくわかる 挑発して争いの種をばらまいてるのがよくわかる そんなに他人を見下して優越感に浸って虚栄心を満たしたいなら 俺を見下せばいいよ そうすればお前は満足なんだろ ならそうすればいい
みんなぐだぐだと長ったらしいな 「お前のかーちゃんでべそ」でいいでしょ 等価なんだから
悔しいんですね
どうでもいいからOpenGLの話しようぜ
>>772 等価であるという命題は自明ではない
証明が必要だ
もういい加減にしろよ
落としどころがわかんないんだよ 簡単か難しいかは主観的、どっちが正しいかなんてのはない 事実としてレアかどうかぐらいでしか語れない レアだから難しいんだろと言っても認めない もう無理、こいつは常駐してずっと荒らすに決まってる このスレはもう終わりかもな みんな今までありがとう楽しかったよさようなら
>>777 なんでお前が終わることが
スレが終わりになるんだよこの自己中
>>777 「とりあえずこいつが今後レスるだろう事を
先にレスって口封じ的な対策を取ってみました。」
って事ですか?
あ、もう見ていませんね。
glTranslatedに指定する引数ってどういう単位なんでしょうか たとえば以下のように正射影を設定して glOrtho(0.0, 200.0, 200.0, 0.0, -1.0, 1.0); glTranslatedでx軸に対して100移動させたいのですが glTranslated(100.0, 0.0, 0.0)とやってもぶっ飛んでいってしまいます。 glTranslated(1.0, 0.0, 0.0)とやると画面丁度半分くらい移動するんですが
んなわけない どこかでなにかしてるからミニマムのコードにして動かしてみ
モデルビュー行列とプロジェクション行列の違いをググれ
何でこんなに荒れてるんですか?
ああ、MMDとニコ厨は深い関係があるってことか
>>784 「人を見下したい」
原因はこの1点に尽きる。
ここで荒れるようなコメント打つ元気があるなら、
webに有用な情報を提供する側にでもなったらどうだと思う。
見下すくらい自身があるなら、そのくらいの技術はあるだろうに
787 :
781 :2011/10/21(金) 21:01:26.29
LoadIdentityの後にglOrthoとglMatrixModeを再設定したら 意図した動きになりました 正直、詳細はよくわかってないんですが目の前の問題は解決しました ありがとうございました
>>787 glMatrixModeかPushMatrixあたりでなにか手違いがおこったんじゃないか?
Gems方式というかある課題について解説とサンプル実装を集めて寄稿するサイトが欲しい 例えばSSAOという題で解説とサンプルをのせる。 一人でやると大変だから有志で。1つぐらいなら貢献できる分野があるだろ。 取りまとめは床井先生でお願いします
「お題」 と 「俺の解き方」 みたいな感じか
よっこらとっこいしょ
いいとこいけばいいのに
>787 元コードは glOrtho(0.0, 200.0, 200.0, 0.0, -1.0, 1.0); glLoadIdentity(); glTranslated(1.0, 0.0, 0.0); // ---A みたいな流れになっていたと見た。これだとAに100とか指定するとぶっとんじゃう。
794 :
781 :2011/10/22(土) 10:56:03.58
>>793 まさにそんな感じでした
というかglOrthoは1度だけ設定すればいいと思ってました
えっ違うの?!
話違うかも知れんが、glOrtho とかって、 射影方法を OpenGL に「設定する」関数だと勘違いする人いるね(俺も最初してた) 本当は、単に現在の変換行列に glOrtho なんかで指定した行列をかけ算するだけなのに
そこらへんちょっと特徴あるからなGLは。D3Dから入ると最初は結構戸惑うよね。 一応プロジェクションに一回設定して以後触らなければロストするまではそのまま使えるな。
ES2.0だとその辺なんにもないw
俺はchronosのPVRTライブラリから拝借してるよ。
クロノスじゃなかった Imaginationだった
GLM使えよ常識的に考えて
今GLMダウンしたけど使い方がわからない。 hppって何?
ヘッダーだよ 中身は全部ヘッダーに書いてあるから別途ライブラリをリンクする必要はない ヘッダーをコピって終わり
なるほど!^^
glewについての話題もここでいいのかな? glewのコードを眺めてみたのだが、どうなってるの、これ? コードは暗にOpenGLの上位互換を前提にしてある用に見えるのだが、ダメじゃね? 例えば、glBeginとかは新しいバージョンでは使えなくなってるけど、 なんでバージョン1.1のAPIだけプロとサイプ宣言するだけで外から関数アドレスを取得しないの? できるだけ多くのバージョンに対応しようとしたら、 glStringでバージョンを取得して分岐とかしなけれあばならないわけか?え?
32bitのXPでノートPCなんだけどQuadroFX570M使っててドライバもNVIDIAで落とせる最新のなんだが インストールちゃんとしてもOpenGLが無い的なこと言われるんだがどうすれば・・・
並行移動って単にベクトル足し算すればいいんでしょ。 なんでtranslate行列とかあんの?
3D処理は行列演算だらけだから処理まとめちまうわけよ
単純なデータなら別にいいが、複雑なモデルや変換だとベクトル足していくだけじゃダメだからな。 まあ実際やる事は結局足し引きだが、そういう場合に毎回ベクトル持ち運ぶのは面倒だろ? だから行列でやんの。 あとtranslate行列ってのはあくまで概念的なもので ベクトルから毎回translate行列をわざわざ作ってそれを改めて使うってことはあまりしないぞ。
最近ライトを10000個描画するにはどうすればいいだろうと考えていたが、 Deferred系レンダリングで画面全体を覆う板ポリゴンの代わりに ライトの影響範囲と同じ形状の物体(点光源なら球)をレンダリングすると クリッピングやZテストが効いて無駄なライトを高速に除外できることに気がついた。 ライト10000個というと随分多い気がするが球を10000個なら屁でもない。 有効かどうかは不明だけどインスタンス・レンダリングを使ってもいい。 ......という事を考えたのだがどうだろう? もう1つの課題はシャドーマップをいかに高速に作るか。できればソフトシャドー処理付きで。 影がつくライトは最大4個とかでいいが、それでもやはり重い処理であることに変わりはない。
>>810 それだとライトが重なるフラグメントで何度もGバッファの読み出しとライトの計算結果の書き出しが発生しない?
OpenCL使ってLighting passを実装したらGバッファへのアクセスも一度ですんで、何個ライトがあってもレンダーターゲットへのメモリアクセスが一度で済んで良かったよ、一万は試して無いけど、千くらいのライトなら余裕で扱える。
812 :
810 :2011/10/25(火) 13:07:47.22
うん、超読みまくる 1フラグメントを照らすライトの数だけ(別のシェーダーが)G-Bufferを読みまくるのでそれが明らかな欠点 利点は個数無制限でライト毎に個別のシェーダーを実行できる事かな? TrebilcoのLight Indexed Deferred Shadingも考えたけど 事前にライトのインデックスを作って帯域の節約を頑張るより、 全部素直に実行してしまったほうがシンプルでフレキシブルかなと思った。 OpenCL使うのはちょっと...
生活してたら光源10000個もないよな 花火大会の会場で魔法で戦争でもしたらそのくらいかな
光源10000個ってさ、電球のような光源じゃなくて、 GIとか火花とか火線とかをシミュレートするためのもんじゃないの? いや、全く知らんが
815 :
デフォルトの名無しさん :2011/10/26(水) 20:24:36.58
シーントラバース、バッチといえば、OpenGLでDX11でいうところのdeferred contextみたいなスレッド並列でコマンドバッファを作成する拡張命令ってあります?
立方体回転させてライトの光が少ししか当たってない下面を上向くように回したら、 下面が暗いままでした。 現実世界と同じように暗い部分を回転させて光源に向ければ明るくなるようなライトを期待 してたんですが、ライトの概念勘違いしてるよね?
>>818 どのAPIを使っているのかわからないので具体的な指摘が出来ないが、ジオメトリの座標系とライトの座標系の不一致だと思われる。
ES2.0なんですが、プログラム間違ってるということで座標設定辺りを中心にもう一度見直してみます。
823 :
デフォルトの名無しさん :2011/10/28(金) 02:28:40.96
あの辺のOpenGLのライトの仕様は狂ってるよな 初心者頃殺しだわ
ライトも行列スタックの影響を受けるんかもう忘れちまったわ
ちょいと質問。 今、2Dの画像を表示するのにglPixelZoom()してglDrawPixels()しているんだが、 これだと画素がそのまま拡大されてしまうからせめてリニア補間したい。 となると、避けて通ってきたテクスチャを使う以外に妥当な手段はないのかな? 目的が目的なので、画像サイズは120x12とかで表示エリアは800x200なんだ。 避けて通ってきたからテクスチャでも実現可能なのか、どうすりゃいいのか誰かヒントを頼む。
>>825 テクスチャ以外でできるかどうかは知らんけど、少なくともテクスチャならできる。
注意するのは、120x12を拡大するなら、128x16のテクスチャを作成して、
そのうち左下隅(まぁ別にどこでもいいけど)を使うようにすることくらいかな。
120x12のテクスチャだとダメな場合があるので。
テクスチャ最初はメンドイし避ける気持ちも分からないでもないけど、一旦使えるように
なれば、すごい自由に描画できるようになるから、ちゃんとやった方がいいよ。
827 :
825 :2011/10/28(金) 13:29:18.90
>>826 レスTHX!
やっぱりテクスチャでやるか。
仕方ないから「回せますよ」って釣り言葉で工数拾ってこよう。
えーと、サイズは2の冪じゃないとダメかもしれないってことね。
併せて了解。
829 :
825 :2011/10/28(金) 13:44:52.82
>>828 お、>1にある本だね。流石に買おうかな。
本を買わずにOpenGLやってるのが間違いだとは自分でも思うw
# なんせろくに本などない時代からエンジニアやってるロートルだからさ。
POP PUSHシステムとDirectXのSetTransformシステムどっちが使いやすいの?
831 :
825 :2011/10/28(金) 17:05:20.54
書き忘れたけど、>828もTHX! ってことで、やっつけでこんな感じに。 GL_CLAMPを指定しないと、端っこが影響受けてしまうのに気付くまでに二時間悩んだw -- glPixelStorei(GL_UNPACK_ALIGNMENT, 4); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, height, depth, 0, GL_RGBA, GL_UNSIGNED_BYTE, raster); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glTexCoord2d(0, 0); glVertex2d(-1, -1); glTexCoord2d(0, 1); glVertex2d(-1, 1); glTexCoord2d(1, 1); glVertex2d(1, 1); glTexCoord2d(1, 0); glVertex2d(1, -1); glEnd(); glDisable(GL_TEXTURE_2D); -- うーん、今のところ遅くないから目を瞑ったけど、 再描画のときくらいテクスチャ割り当て処理を飛ばすようにしないとなぁ。 で、ついでにもう一つ質問。 テクスチャを複数(割り当て直さずに)使い分けるにはテクスチャオブジェクトを使えってこと? まぁいいか、本を買おう。
120x12程度なら、毎フレ転送しても影響無いかもw >テクスチャを複数(割り当て直さずに)使い分けるにはテクスチャオブジェクトを使えってこと? 合ってます。
テクスチャって256x256に32x32を64個詰めて切り出すみたいにして貼ってる? それとも32x32のテクスチャを64個作ってidで管理してる? どっちがいいのかな テクスチャリソースの上限とかあります?
そりゃ作りたいプログラムと動かすハードによるとしか 普通は32x32を64個が扱い易いけど
>>817 FXAAの日本語の説明だと、Cedilのcedec2011タグの中に入っているNVIDIAの解説がわかりやすいかも。
>>833 ターゲットが携帯向けGPUとかなら出来るだけパックしたほうが良いかも。
>>834-835 どもです
2Dのときは一枚の画像ファイルにマップチップ詰め込んでやってたんだけど
上ででたGL_CLAMPとかのからみもあって3Dではやっぱりばらばらの方がいいのかなかな
ビデオカードにもよるが、大抵のビデオカードは256×256か512×512の画像サイズに 最適化されてて速い 32×32とかに最適化されてるのはほとんどない 速さを求めるなら256×256か512×512にまとめて使う部分を切り出すのが良い
>>836 テクセルとピクセルをドットバイドットで使うなら
→マップチップ詰め込みが良い
テクセルとピクセルをドットバイドットで使わないなら
→チップの端の問題は、GL_CLAMPにしても完全に解決するわけじゃない(BORDERまで使えば別だけど)ので、
どうせ問題あるならマップチップ詰め込んだ方が性能的にオイシイと思いますよ。
チップは32x32で作るけどその内側30x30を使うようにする、とかの妥協はできないんでしょうか。
>>835 資料
PR0022-NVIDIA-DirectX.pdf
資料は期間限定でCEDEC2011参加者のみに公開しています。それ以外の会員の方には年明け予定です。いま暫くおまちください。
だからCEDECは嫌いなんだヽ(`Д´)ノ
>>839 昔は一般に公開すらされなかったんだから
甘えるな。
年明けまで待てるかボケ ググったらソース(FXAA3_8.h)と超短い解説はゲットしたのでそれで勉強するわ CEDEC以外から良質の資料が今すぐ無料でダウンロードできるのに アイツらなんで金とって不便なことやってんの? 馬鹿なの? で、のっけからよくわかんないんだけどRGBLのL(luma)というのはluminanceにガンマ補正をかけたもの? つまり元データがガンマ補正してない普通のRGB8だった場合Lは a = sqrt(0.299r + 0.587g + 0.114b) でいいの? そして使う時に FXAA_LINEAR = 0 を指定すればいい? 知っている人教えて
>>841 それでいいよ。
英語でいいならNVIDIA SDK11のFXAA white paperがわかりやすいと思う。
というか某tuedaさんはOpenGL以外の話をするなら別にスレたてて話しした方が良いのでは?
訂正、sqrtはなくていい。
入力はRGBは線形(FXAA_LINEAR=1)でLのみ非線形(ガンマ補正済み)だな ざっと見る限り3x3の輝度(luma)を見ながらエッジの方向を決めて テクセルフェッチを繰り返してエッジの長さを決める いま注目しているピクセルが長いエッジのどの辺にいるか求めつつ(dstN/spanLength), -0.5〜+0.5のオフセット(subPixelOffset)を計算して (バイリニア補正の)フェッチしなおして終わり。 え、こんな簡単な処理でいいのって感じだな 要はエッジ方向と垂直に少しずらして取りなしているだけ エッジの端点の形を考慮する必要もない そもそもこれでポリゴンの外側のみぼかす事ができるのか不思議だ 使うだけならコピってくれば終わりだけど。
>>842 あまり細分化してもしょうがないんじゃね?
ゲ製作技術に3Dゲームグラフィックス・プログラミングを立ててもいいけど
どうせOpenGLかDirectXを使うんだから同じ事だろう
ゲ製にもOpenGLスレなかったけ?
あるけどあまり機能していないな。
物体を指定位置に表示して以後その場で回転させる動作を、pushとpopを使って処理したいのですが。 draw { … glMatrixMode(GL_MODELVIEW) // 行列をモデルビューに指定 if ( 最初の1回目 ) { glTranslatef // 指定位置にセット } glRotatef // 回転 … // 描画命令 } 今まではこのように記述していました。 これをpush、popを使用した場合、 draw { … glMatrixMode(GL_MODELVIEW) // 行列をモデルビューに指定 glRotatef // 回転 glPushMatrix // 現在の行列を保存 glTranslatef // 指定位置にセット … // 描画命令 glPopMatrix // 保存した行列に戻す } と記述したのですが、正常にその場で回転してくれません。 回転処理は累積させたいので保存させ、指定位置のセットはその瞬間だけ行いたいので描画後保存した行列に戻 せばよいと思ったのですが、考え方間違えていますでしょうか?
何がやりたいのかサッパリわからん 1描画ごとにMODELVIEW行列をクリアしてるなら(普通はしてるだろう)、 1回目は glTranslate(); のみで2回目以降は angle += 10 して glTranslate(); glRotate(); というだけだろう。
もしかして描画(フレーム)をまたいで行列を再利用しようとしてないか? それやると死ぬ MODELVIEW行列に限らずOpenGLステートは基本的に 1描画(フレーム)ごとに0から全部セットし直すものだ
>>848 多分、考え方を間違えてる。
「物体を指定位置に表示して以後その場で回転させる動作」をさせるだけなら、pushとpopは要らないよ。
行列スタックの概念というか、使い方を勘違いしてるんじゃないかな。
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(x, y, z); // x,y,z: 物体の位置
glRotatef(angle, rx, ry, rz); // angle,rx,ry,rz: 物体の回転
物体を表示();
でおk。
変数x,y,zを変化させれば物体は移動するし、変化させなければ物体は移動しない。
変数angleを変化させれば物体は回転するし、変化させなければ物体は回転しない。
なんでOpenGLってpush popなの? 普通にテンポラリー変数に保存しておけばいいだけじゃないの? 何か使い道あるの?
>>852 使い道どころか、テンポラリ変数自分で用意してだなんてしんどすぎる。
例えば 人体の間接や木の枝とか、再帰的なノード構成になってる内容を計算しながら描画するとき、
深度1: ノード0のローカル空間を基準に子が回転している
深度2: ノード1のローカル空間を基準に子が回転している
:
みたいな状態があって、それをテンポラリで自前でスタック用意してやるんかい
てか、普通にスタック push/pop の方が全然便利で楽。使い道どころか必須
>>852 OpenGLはもともとクライアントサーバモデルだから、push/popが無いと
サーバステートの読み出しが頻発して困っちゃうんじゃないかな。
あと追記しておくと、OpenGLで行列セットしてくってのは、 「その空間上の頂点位置を変換する為の行列」 = 空間のその時の位置変換行列 になる訳だから、 いまどういう状態になっているか、(当たり前だが)どのタイミングでどうなっていて欲しいかを把握してないといけない 例) 関数 F() *) ここまで回転やら移動やらさせました。この空間に基準に描画したり、あと個別に移動回転拡縮させたい for(…) { ・なので一旦ここで push A) 描画したり B) 現時点での変換行列をベースに、さらに個別の回転や移動 ※再帰で F に行くケースもこれと同じ ・個別の行列変更が終わったので pop して * の時の行列状態に戻す } で、push/pop のFILOスタックは便利な訳です
それ別に一時変数でget/setしても変わらないよね もっともpush/popで良いと思うけど
>>856 再帰するような場合、結局自前のテンポラリもスタックや他の構造に変えなきゃならなくなるから、
だったら単純に用意されてるスタック使う方がいい
てか、こだわる必要がある話じゃないと思うぜ
>>857 この件に限らないけど、経験がないと理解できない考え方とかあるから、
あんまり難しい話はどこかの解説サイトのリンクでも貼った方がいいよ
絶対に話長くなるから
>>849 >>850 まさにその通りで行列を初期化せず、使い続けるものと思い込んでました。
glRotateで回転させるには初期化せずに行列を更新していくものと勘違いしてましたが、
確かにangleを増減させれば済む話ですね。
>>851 回転させたくない別の物体まで回転していたのでおそらくpushとpopを使わなければならないと思い、
試しに1つの物体でpushとpopを使ってみようとコードを書き、今回に至りました。
指摘された部分を直してもう一度考えてみます。
致命的な勘違いが分かって良かった…
ありがとうございます。
push/popは無意味に使ってる解説サイトとかあるから誤解を生みやすいな。
解説サイトを見て投影設定,カメラの位置,光源の位置を決めて立体物を描画したのですが, これらをどのように扱うものなのかイマイチ理解できていません。 現在: 1回だけの処理(俗に言うInit関数) Lightの位置,パラメータを決めて有効化(MODELVIEWワールド?) リサイズ関数(glutReshapeFunc(resize)) GL_PROJECTION Mode → glLoadIdentity → 投影設定(glOrtho/glPersp.) → gluLookAt設定 →GL_MODELVIEWに戻す Display関数 push/pop なり rotate/translateなり描画する。 この設定順と設定場所は一般的な使われ方として正しいですか? カメラをXZ平面と平行に回転させるプログラムを作ったのですが,キーボードコールバック関数内でresize(width, height)関数を呼び出して カメラの位置を再設定するというおかしな処理をすることになってしまいました(gluLookAtを書き換えるだけだと上手くいかない。)
>>861 キーボードコールバック関数の中でGL使っちゃだめです。
reshapeコールバックの中でglViewport()呼んでるサンプルとか多いけど、本当はあれも良くないはず。
基本的には、displayコールバックの中以外では、GL関数は一切呼ばないようにした方が良いですよ。
864 :
861 :2011/10/30(日) 16:04:23.92
>>862 それはつまりglutPostRedisplay()で全てを更新できるような設計にすべきということでしょうか?
>>864 「glutPostRedisplay()で全てを更新できるような設計」というのがちょっと意味分からないですけど、
つまり、
・display以外の全てのコールバックは、単に状態(描画領域の大きさ、カメラの位置、etc.)を更新する。
ここでいう状態の更新というのはglLightやglOrthoを呼ぶということではなく、アプリが持つ
ライト位置や視野などの情報(変数)を更新するいう意味。
・displayコールバックでは、上の情報を元に描画する。
てことです。
なんで display コールバック以外で glOrtho なんかを読んじゃダメなの? メモリリークするとか?
>>866 実装上の理由:
displayコールバックが呼ばれる時以外は、GLのコンテキストがきちんと設定されていない場合がある。
設計上の理由:
「状態の更新」と「描画」をきちんと分離しておくと、プログラムの再利用がしやすくなる。
後者に関しては必須ではないんですけどね。
GLUT以外に移植したり、ステレオ描画とかし始めたりすると、多分有難みが分かってくるんじゃないかと・・・。
>>865 言葉足らずですみません。おそらく同じことを考えてました。
「状態の更新」を行ったあとにglutPostRedisplay()でdisplayコールバック関数を呼び出し,
カメラ,光源などの設定を全て再設定する設計,ということでした。(ちょっと無駄が多い気もしますが)
>>867 なるほどね
それを考えると、ほとんどの入門サイトや入門書はやばいな
>>868 ああ、それじゃ、その認識で合ってます。ハイ
「カメラ,光源などの設定を全て再設定する」のが普通だし、無駄とはいっても実行時間が
増えるわけでもない(誤差みたいなもん・・・誤差にすらならない程度)ので、毎フレームやるよろし。
毎フレームやらないのはテクスチャ転送くらいじゃないですかね。
>>867 displayコールバックが呼ばれる時以外でGLのコンテキストがきちんと設定されていない場合があるって
glutMainLoopが走ってる段階でGLのコンテキストが無効になってる場合ってどんな時?
OpenGLではなくGLSLスレを立ててもいいかもしれないな
ここで質問すべきことかも自信ないのですが、 障害物の向こうに隠れても見えるようなオブジェクトを描画するには どう実装するのが良いのでしょうか? ゲームを作ってるのですが、キャラクターのHPバーがそのキャラの頭上に浮いてて、 HPバーだけは壁みたいな障害物の向こうからも見えるイメージです こういう方法に名前が付いていれば、名前だけでも教えていただけると嬉しいです
>>874 デプステストをalwaysで描くのはダメ?
隠れた所だけ別のマテリアルで書きたいなら、普通にデプステストありで書いた後で、デプステストの方向を反対にしてマテリアル変更してもう一度描くとか。
たしか特許取られてる手法(表現方法?)もあるから気をつけろよ
コナミだったかな。
>>874 方法も何も、単に
glDisable(GL_DEPTH_TEST);
描画
glEnable(GL_DEPTH_TEST);
で終わりでは
ちなみに
>>878 はただの上書きだけど、HPバーがどうのって話であれば
まさにそれだけの事かなと。 別に難しく考える必要ないっていうか、
普段コード書いてる人なら誰でも知ってる普通の話
880 :
874 :2011/11/01(火) 01:12:28.23
極々初歩的な質問に付き合ってくださって有難うございました...
>>878 の方法でできました
お恥ずかしい限りです...
いいってことよ。
話の流れで出てた特許に関する部分が気になるな。 どっか3D表現に関する特許絡みをまとめた所って無いのかな。 しかしソースとかならともかく表現手法とかに特許取られると クリエイター側にとっては本当につらいね。
クリエーターて
いやぁ、表現部分に関することだし プログラマーって書くのはちょっと憚られたというかなんというか。
かといってモバ○ーみたいなクソ会社がすぐ他社のコピーゲームを作るのも問題だからな
特定の表現を実現するためのアルゴリズムの特許があったとして、 それとクリエイターがどう関係するのか分からん もしかして、クリエイターがロジックも組むのが普通なのか?
糞レス続けるな
>>878 うぁはは、入門サイトなどではしばしば「壁の少し手前」を計算しているけど、これで充分ジャンw
お前バカ?
部屋を作りたい場合は glfrustumのfarを部屋の奥行きの長さにして、 床、壁、天井を長方形で指定位置に描画してテクスチャ貼り付けって感じだよね?
それでいいんじゃない
Pointsの形を四角形から丸に変える方法はないですか?
テクスチャー貼れ それかシェーダーでがんばれ
>>892 glEnable(GL_POINT_SMOOTH);
・・・ま、使えない場合もあるけど。
書き忘れてしまいました。 100.0fの立方体の方がほんの少し広いように見えていますが、 これはカメラの位置が10.0fのものより若干後ろにあるためです。
>>897 どうやってんのか知らないけど、どっか間違ってるんだろ
10.0fと100.fを同時にワイヤーフレームで描画するようにしてみたらデバッグしやすいんじゃね
>>897 いや、見え方は変わらないよ
ちゃんとした状況がわからないけど、カメラが後ろの壁にぺったり張り付いてるならそれはカメラに取って相似な状況だからね
果たしてちゃんと、カメラ位置をグローバル空間上固定した状態で、 頂点位置を拡大縮小してるんだろうか。 俺も立方体の壁にカメラがぴったり張り付いた状態で、立方体の拡大縮小してるんじゃないかと予想ww =拡大に合わせてカメラ位置も後退しているから、同じ格好に見える、みたいな
カメラ位置固定なら部屋全体を10倍しようが100倍しようが見える風景はまったく同じだろ
900,902を支持
これは一辺10.0fの時にカメラ位置が10.0fにある場合と100.0fの時にカメラ位置が100.0fにある場合ってことか? それともカメラの位置は両方の場合で同じ位置に固定? 前者ならほとんど見え方が変わらない可能性はあるな。
正直、情報が足りない
>>904 自分の部屋の真ん中にカメラを設置して、部屋が10倍、100倍に広がった状況想像してみろ
その意味で
>>900 はその通りだが、
>>902 は違うだろw
908 :
904 :2011/11/03(木) 13:09:21.55
>>907 900と902の言ってるコトは、本質的には同じでしょ。
「カメラ位置固定なら見える風景は同じ」ってことは逆に、カメラを同じ量(たとえば右に5.0)動かして
カメラから見て相似であるという条件を崩せば違いが分かる、って事なんだから。
902がそういう意図で書いたのかどうかは知らないけど、自分はそう読み取ったので。
ぶっちゃけくだらなすぎてどうでもいいな。レベル低すぎだろ
どうでもいいと言いつつレスとはこれいかに
>>911 おいおい、カメラの壁に対しての相対位置が同じならそうだが、カメラ位置固定で壁だけスケーリングしたら違うぞ。頭大丈夫か?
>>908 お前、プログラマの端くれだったら、「どこに固定」 と書かれてもいないレスに対して
本質的には同じでしょ、とか言うなよw
壁に対して相対的に距離が同じってのは、少なくともカメラの座標値的に移動してる訳だから、
むしろ固定じゃなくて移動してるだろww
なので正解は、
>>906 だと思う
他のレスは全部、想像と思い込み。お前らプログラマ失格
>>897 カメラ位置(あるいはその近く)を中心に部屋を拡大した場合、
同じ大きさになっているかのように見えるのは正しいです。
カメラを移動してみれば、違いが分かると思いますよ。
(一辺100.0fの方が、相対的に移動量が少なく見えるはず)
人間やカメラの場合、部屋が大きくなればそれと分かるのは、視差(カメラの移動に相当)や
ピントがあるからです。OpenGLにはそういうのが無いので。
簡単に言うと、10倍大きい物が10倍遠くにあっても、1/10の大きさに見えるので
違いが分からない、みたいな。
あなたは今ある部屋を眺めています あなたは今一辺1/10のある部屋の模型を見ています 後者は目の前にあるのに元の部屋より大きく見えませんどうすればいいですか
月と太陽がほぼおなじ大きさに見えるとかそういう話か 別のカメラ位置から見てみるとかなんで自分でやってみないのかね
918 :
897 :2011/11/03(木) 16:15:34.23
すみません…
両方の立方体の中心は0,0,0で、10.0fの方のカメラ位置が(0,0,4)、
100.0fの方が(0,0,49)だったかな。
100.0fの方は移動量は少なく見えますね。
>>915 にある後半の説明で多少理解しましたが、
カメラについて知識不足なんで付いたレス見ながら調べてきます。
ありがとうございました。
>>915 月面で撮られた写真が偽物()とか言われてるのもそのせいだな
これからの3DAPIっていったらopenglかねえ・・ 当面はスマホが主流そうだし
打算で取り組むようなもんでもないと思うけど。
スマホで主流だからなんて浅ましい理由でやったら間違いなく損だな スマホで作るだけならUnityやcocos2dのようにOpenGLのラッパが幾らでもあるし
純粋にハンドリング覚えたいとか、もっと単純にあれってどうやるんだ?から始まるとか その辺の探究心や好奇心が根っこに無いと、きっと何も覚えない
924 :
デフォルトの名無しさん :2011/11/05(土) 23:06:38.64
OpenGLで3次元で3つの球がぶつかる物理シミュレーションをC言語でやっています 球同士・球と壁がぶつかるときの計算式教えていただけませんか? 物理が苦手なんで分かりません
どう考えてもOpenGL以前の問題なんだが。 数学板にでも行くか、Yahoo!猿知恵袋辺りで質問したら?
以前ではなく、全く関係ない問題
>>924 openglと球同士・球と壁がぶつかるときの計算式がどういう関係があるのか説明してみて
「OpenGLで3Dインターネットブラウザを作っているのですが、 インターネットにつなぐ方法を教えてください」 ってぐらい関係無い
Bulletライブラリでも使ったら?ソースもあるし。
レベル低すぎだろ。ほんと日本には最新のOpenGLを語れる奴がいないわ
× 日本には最新のOpenGLを語れる奴がいない ◯ 2chには最新のOpenGLを語れる奴がいない
>>931 そういうサイトはぐぐるとすぐ出てくるんですが、よくわからないので
計算式教えていただけませんか?
計算式がわからないなら、ググった結果だけを教えていただかなく結構ですので
>>930 openGLのどんなお話が聞きたいの?
937 :
931 :2011/11/06(日) 14:02:22.41
>>934 お前は本当に馬鹿だな
ものを知らないとか幼稚だとか、そういうレベルではなく、本当に馬鹿だ
>>931 の第2部「エネルギー保存則」の [2物体の衝突]に、
衝突後の2球体のそれぞれの速度を計算する式がそのまま書かれている
もしかして、その式だけをここに引用しろと言ってるんじゃないだろうな
まして、そこにC言語のソースコードもあるのだが、それも見えないのか
「よくわからない」というのは、何も見ないで言っているのか?
そんな姿勢で理解できるわけないだろ、馬鹿か
>>937 934が馬鹿かどうかとopenGLはどう関係するんですか?
939 :
931 :2011/11/06(日) 14:23:24.71
>>934 は本人じゃないかもしれないだろww
だからレス乞食乙と書いたのにお前らと来たら
てかそんなの bullet と併用すれば一発終了だろっての
941 :
931 :2011/11/06(日) 15:40:06.04
>>940 2ch において2つのレスが同一人物によるものかなんてどうでもいい事だと思う
正確なところは確認しようがないし、同じ・違うと言われても信じられるものでもない
俺は
>>934 のレスにむかついたから、ああいうレスをした
>>924 本人でないのなら、本人は自分のレスに問題があったわけではないのだから、
何も気にする必要はない(
>>934 自身は是非気にしてほしいところだが)
ちなみに
>>924 (
>>934 も)は「計算式」が知りたいそうだが、
bullet と併用して計算式の理解が一発終了となるのなら、
是非その方法を質問者に教えてやってくれ
ここで計算式を並べて解説するよりも、bullet を使ってみるよりも、
既に丁寧に解説されているページが多数あるのだから、
それをしっかりと読んだ方が計算式の理解は遙かに早いと俺は思う
完全に糞スレ化してるな。最近レベルが高いと思っていたらすぐこれだ
943 :
931 :2011/11/06(日) 15:59:40.36
俺も含めて、高いレベルのネタを間をおかずに振れない・返せないのが原因 ちょっと精進してくる
>>943 レス乞食にレスするお前がバカ
>>934 が本人かどうかなどどうでもいい
レスしたお前がバカ
>>941 その話題自体がスレチだって事に気づかないまま、顔真っ赤にして長文ご苦労様です
>>937 >まして、そこにC言語のソースコードもあるのだが、それも見えないのか
ソースらしきものはありますけど、そのままじゃコンパイルできませんでした
コンパイルできるソースください
それがわからないならレスしていただかなくて結構ですので
>>947 コンパイルできなかったのならエラーメッセージを提示しろ。
但し、スレ違いだからどっか逝け。
レ ス 乞 食 に レ ス す る な
>>930 OpenGL extension registryでも読んたらいいんじゃない。
OpenGLで究極のおっぱいをレンダリングするにはどうすればいいですか?
>>951 現物をこねくりまわしてよく研究する事が不可欠だと思います。
>>951 動きを真似るにはとりあえず分子間力を学ばれるのが良いかと
あと、見た目の色を真似るには電磁気学の知識も有った方が良いと思われます
ID出ない板はこれだから困る。
ID出ても変わらないと思う
来年の卒業研究それにしようかな...
今年の卒業研究は諦めたのか
はやくコンパイルできるソースよこせよ
openGL ESでGL_PROXY_TEXTURE_2D_EXTにあたる機能はないのでしょうか。 ないとしたら、テクスチャが安全に作成できるかを調べたい場合、 テクスチャメモリの最大値にどれくらいの余裕を見れば大丈夫なのでしょうか? よろしくお願いします。
glGetString(GL_VERSION)したら0000って出たんだけどGLSL出来ないってこと?
実際のところ同じマシン上で、同じライブラリとインクルードファイルを使って、 コンテキストの作り方で glGetString(GL_VERSION) の値が変わることってあるの?
>>961 コンテキストあるときに呼んだら3.0.0って出たわー
glGetIntegerってglutInitだけじゃなくてglutCreateWindowを やらないと使えないことに気が付かないで30分くらい悩んでた
そりゃ出力先(ウィンドウ)がわからないとOpenGLも困る
困ってもじもじしているOpenGL
ゲームプログラミングだとテクスチャマッピング使わない方がいいって書いてあるの 見かけたがマジか… バリバリ使ってたわ
何が良いんだよ 健康に良いのかよ
精神的にはいいのかもしれんなあ
1億頂点くらい使って全部頂点カラーで。
テクスチャマッピング使わなかったらゲーム作れなくね
ポリゴンだけのゲームは作れる バーチャファイター1とかな
ゲームと言う概念に、テクスチャマッピングは必須でない
低コストにディテイル上げる方法なのに使わないとか何事 まさか法線マップ使えとな それか15年前の資料か
ここは2ch 「ゲームが作れない」と言うから反論が来る 「今時のコンシューマ機のゲームが作りにくい」とでも言っておけば、 そうだねという意見しか出てこない
しかしそれでも詭弁を振り回して揚げ足を取りに来るのが2ch
そしていつの間にか全然関係のない話で大盛り上がり
そうだね
glewのライセンス何言ってっかわかんねー
lowp mediump highpのpってなんですか?プロファイル?
そうだねプロファイルだね と言いたいところだが、たぶん precision だと思うぞ
ありがとうございます^^
すみません。 Perspective行列を作るときに、FOVに45.0fを渡すと正常に描画されるのに、30.0fを渡すと画面が上下反転するのですが何故でしょうか?
>>983 どっか間違ってるからじゃね
44だとどうか43だとどうかって少しずつ変えてみるとか、すこしジタバタしてみたら
>>983 反転するのは上下だけなのか、左右はどうなのか、
Z 値は正しいか、なんかも考えてみた方が良いね
その行列を OpenGL に設定(カレント行列に乗算)した時、
カレント行列はちゃんと意図通りの種類のものか、
カレント行列は単位行列だったのか、別の行列だったりしないか
という辺りも一緒に
スクリーン座標の二次元の点を描画する方法を教えてください
ありがとうございます
どういたしまして
次スレのテンプレ考えようぜ
じゃあ、お前から
やだ
じゃあ俺が
だめ
うめ
そろそろサメの話しようぜ↓
ダメ
そろそろサーニャの話しようぜ
1000取ってやんよ!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。