1 :
こども社長:
初心者だけどOpenGLでゲーム作っちゃうぜ!!
2 :
デフォルトの名無しさん:2010/03/19(金) 20:57:00
糞 ス レ 終 了
3 :
こども社長:2010/03/19(金) 21:01:14
#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#include <GL/glut.h>
ゲ作板でやげ
6 :
こども社長:2010/03/19(金) 21:58:35
ゲ製板ではスレ立てれなかったんだぜ!!
じゃあ死ね
あっちで立てられなかったらこっちか
なるほど
こういうスレほしかった!
けど、なんでゲ製作板で立てられなかったのだろか...
スレ立て規制に引っ掛かってた。
>>10 重複ではないとおもふ。
ちなみに今はglutでシェーダーの勉強をしているんだよ。
>>11 ●持ちの俺がゲ製板に立て直してやるから、削除依頼出して死ね。
ゲーム関係はこっちに立てるなと書いてあるだろうが
14 :
こども社長:2010/03/20(土) 20:53:15
ゲームじゃなくてOpenGLゲームなのでOK。
さあ盛り上がりましょう。
こども社長が何人もいるwww
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
テクスチャの描画はどうやってやる?
ググレカス
床井先生の本を読め。
つーか板違い。
ところでおまいらゲーム作った事あんの?
21 :
デフォルトの名無しさん:2010/05/06(木) 10:33:36
OpenGLだけでキーボード処理はどーすんのかと。
OpenGLが扱うレイヤーじゃねーだろと。
23 :
デフォルトの名無しさん:2010/06/28(月) 13:37:59
>>20 2ヶ月ほど前にJavaScriptでパックマンを作ったことなら・・・
24 :
デフォルトの名無しさん:2010/06/28(月) 20:00:57
JAVA+OpenGLってどうなの?
遅いの?
OpenGLでLineで囲んだ四角い半透明ポリゴンを大量に書く場合
毎回
glBegin(GL_TRIANGLE_STRIP);
glVertex() * 4
glEnd()
glBegin(GL_LINE_STRIP)
glVertex() * 5
glEnd()
で書くのと
あらかじめ1X1の大きさで登録したディスプレイリストに
glPushMatrix
glTranslatef 画面座標
glScalef サイズ
glCallList(FILL_BOX); <- それぞれ色つけるため分けてる
glCallList(LINE_BOX);
glPopMatrix
で書く場合とどっちが早い??
自分で試してみればいい
ディスプレイリスとの方が速いと思うけど実際にやってみないと何とも。
それかVBOを使った方がいいと思う。
28 :
デフォルトの名無しさん:2011/03/13(日) 20:28:18.80
OpenGLで開発環境整えるのってどうすればいい?
emacs
Visual C++ Express入れれば一式ついてくる
あとはglut32.libをどこかから拾ってくればいい
wgl使えばglut32.libいらない
32 :
天使 ◆uL5esZLBSE :2011/07/01(金) 18:12:17.61
Rubyバカにしてる子ってさ
変数に$ついてる言語触ってるって事だよね
いちいちSHIFT+4キーおして $ 打ちまくってる感触はどう?
>>32 一概にそう言われてもメンブレンかメカニカルかだけでも
感触って違ってくるし。
自分の言っている事がいかにあいまいだか気づかない人って
バカだよね。
?
天然さん
OpenGLってシェーダは文字列で渡せるんだけど
もう全部シェーダみたいに文字列にしてくれんかね。
そうなるとC以外の言語からOpenGL使うのすごく便利になると思うんだけど
そういう流れってないの?w
ドライバーがいちいち文字列をパースしてGLコマンドにするのかよw
>>36 面白い発想だねw
文字列ってわけじゃないけど、Plan9のグラフィックスAPIがそんな感じじゃなかったっけ。
シェーダーコンパイル、事前コンパイル済みシェーダーバイナリ
とか、そのシェーダー文字列がどう処理されてるか仕組みを理解してからだね
ぶっちゃけ、どの言語のコンパイラだろうが
コンパイルして実行ってバッチレベルで
ソースコード文字列渡して同じ事できると思うよ
どこでどうアクセスバイオレーションを起こしてるのか、デバッガで追えば?
シェーダソースをファイルから読めてないとか、そんなとこじゃないかと予想。
>>41です。
デバッガで追うと、やはり、GLSLを使おうとしようとするところで、
エラーになりました。
グラフィックカードが対応していないんでしょうか?
ちなみに
Intel G33/G31 Express Chipset Family
メモリ合計 286MBです。
具体的にはどこだよ。
具体的には、この行です。
//シェーダーオブジェクトの作成
vertexShader = glCreateShader(GL_VERTEX_SHADER);
そこで落ちるって、絶対GLSLとは無関係のところでしくじってる。
そうなんですか。
どうやったら調べられますかね?
サンプルプログラムをそのまま実行しているだけなんで…
まずGLSLに対応したGPUを買えと言いたい
やっぱりGPUが対応していないってことなんですかね?
新しいの買うとしたら、
GLSLに対応しているかって、調べられますか?
glGetString
glGetString(GL_VERSION)でバージョンが2.0以上でないとGLSLは対応してない。
新しいGPUを買うのなら、お店に行って「OpenGL3.0以上に対応したGPU下さい!」って言うんだ。
店員:OpenGLってナンデスカ
流石にOpenGL自体は知ってる人は多いだろうが
GPUの対応バージョンまでチェックしてる店員は一部だろうなあ
まぁ今時nVIDIAかAMDなら、どんな低価格の買ってもGLSL動くっしょ
自分の目の前にあるもの(眼鏡、ゴーグル、自分の武器、照準器、HUD、etc.)や
パラメータの表示など、どんなにカメラを動かしても(画面に対して)同じ場所に描かれる物体って
上手い描き方はありますか?
愚直にカメラ座標に近い、視線の正面にある座標を中心に描くしかないですか?
gluOrtho2D とか言っても無駄かな。
>>55 何となくその辺かなあとは思ったのですが
3D描画と組み合わせるときの手順がよくイメージできないのです
glViewport(...);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(...);
glMatrixMode(GL_MODELVIEW);
ループとかイベントとか {
glClear(...);
glLoadIdentity();
gluLookAt(...);
//以下、glTranslate系とかglRotate系とか描画とか
}
…とあったとして、Ortho2Dやその描画の処理はどのタイミングでやるのでしょうか?
むしろこの順番自体を崩さないとダメなのかなぁとかよく解らないのです
色々試そうにも、ちょっと弄ると真っ白になってしまったりしてる状況で…
while(1) {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(...);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(...);
適当に物体描写
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(...);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(...);
適当にHUD描写
glFlush();
}
>>57 ありがとうございます、参考にしてやってみます
でーーーーきーーーーたーーーーー!
>>57 改めて、ありがとうございました!
>>59 HUD描画前に深度バッファはクリアしておいたほうがいいぞ
61 :
デフォルトの名無しさん:2011/11/09(水) 07:38:51.79
キャラクタや背景、スコアやステータスの文字などをレンダリングする時、
それぞれひとつひとつをレンダリングする毎に
glPushAttrib や glPushClientAttrib で情報を待避させ、
glPopAttrib や glPopClientAttrib で戻しているのでしょうか
それとも、属性が同じもの同士、似たもの同士をまとめ、
可能な限り push と pop の回数を減らすように努力するものなのでしょうか
62 :
デフォルトの名無しさん:2011/11/09(水) 12:47:22.48
すいません、自己解決しました
どのみちほとんどのキャラやオブジェクトは、
色など以外は共通の属性を持ってて、それらもキャラ毎に指定するので、
行列と違って属性をキャラ毎に pop push する意味が無いですね
なぜか描画の順番で色が変わったり妙な模様が出たりするよね
描画ツリー作るのが一番正しいんだろうけど面倒臭いです
透明度のあるのテクスチャが、横から見ると+みたいに交差してるのを
描画するにはどうするのが良いんでしょうか?
テセレーション?を行うのでしょうか?
普通のαブレンディングで処理するなら、交差部分で分割して、奥から描写するしかないね。
66 :
デフォルトの名無しさん:2011/11/10(木) 13:35:56.19
シェーダーが使えないならポリゴンを細かく分割してZソートのあと奥から描画。
>>65 >>66 なるほど。ありがとうございます。
ちなみに、シェーダーを使うと別のやり方があるのでしょうか?
68 :
デフォルトの名無しさん:2011/11/10(木) 17:40:11.76
不透明ポリゴンを描画した後にピクセルシェーダーでZの値をみながらブレンドを自前でします。
透過ポリゴンの描画はみんな苦労しているところなのでググった方がわかりやすい解説がでてくるよ。
69 :
デフォルトの名無しさん:2011/11/10(木) 20:11:43.96
うん
>>68 ありがとうございます。
ググろうにも単語がわからないレベルだったのですが、助かりました・・・
一応、ポリゴンを分割しないで、ソートもしないで、交差する半透明ポリゴンを
正しく描画する手法も無いではないけど・・・重いんだよねぇ。
興味があるなら depth peeling でぐぐってみるといいかも。
ポリゴンの高さにキャラクターを立たせる処理を作成したのですが、ポリゴンが
複数ある場合、キャラクターのxz座標で位置が一致するポリゴンを調べ、そのポリゴン
の高さに合わせると考えています。
ポリゴンとの当たり判定を考える場合、常にどのポリゴンに当たるかを調べてポリゴンを特定
してから処理を行うのでしょうか?
73 :
デフォルトの名無しさん:2011/11/12(土) 17:29:12.06
>>72 「ポリゴンの高さにキャラクターを立たせる処理」をしているのなら、
常にどのポリゴンに当たるかを調べる必要がある
ただ、常に「全ての」ポリゴンと当たり判定をする必要は無い
キャラクターの近隣にあるポリゴンのみと当たり判定すればいい
sage忘れてた
ついでに言うと、キャラクターの足部分の「一点のみ」と、
地面の「一点のみ」との当たり判定によってキャラクターを立たせる処理をすると、
キャラクターや地面の凹凸の細かさや高低差の激しさによっては
キャラクターが地面にめり込んだように見えてしまうかも知れん
近くのポリゴンを調べればいいんですね
他の衝突判定も同じ考え方でやってみます。
判定は一点じゃなくて複数点でした方が正確に出せるってことですかね…
色々試してみます。
ありがとうございました。
>>75 > 判定は一点じゃなくて複数点でした方が正確に出せるってことですかね…
ちょっと違う
「正確」の意味がちょっと曖昧だけど、
一点で判定しようが複数点で判定しようが、面と直方体で判定しようが、
判定自体は正確に計算すれば正確にできる(端折れば端折った分だけ不正確になる)
私が言いたかったのは、例えばキャラクターの踵の一点と地面の一点だけで判定した場合、
その判定に基づいてキャラクターを地面に立たせると、つま先が地面にめり込む姿が
プレイヤーに丸見えになる場合もあるよ、ということ
まぁこれらは一点判定の応用で解決できる可能性の高い問題だから、
まずは一点判定をがんばって実装してください
たぶん、いずれは自然と上記の問題に向き合わなくちゃならなくなるし
そういうことだったのですか…
今使用しているモデルは単純なものですが、後で複雑な形のモデルも使用すると思うので
上の問題が発生することを覚えておきます。
ありがとうございました。
78 :
デフォルトの名無しさん:2011/11/20(日) 10:59:19.25
いえいえ
79 :
デフォルトの名無しさん:2012/08/24(金) 12:46:19.57
てす
80 :
デフォルトの名無しさん:
h