OpenGLゲーム作成初心者スレ

このエントリーをはてなブックマークに追加
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>
4デフォルトの名無しさん:2010/03/19(金) 21:02:35
板違い。こっちでやれhttp://pc11.2ch.net/gamedev/
5デフォルトの名無しさん:2010/03/19(金) 21:50:34
ゲ作板でやげ
6こども社長:2010/03/19(金) 21:58:35
ゲ製板ではスレ立てれなかったんだぜ!!
7デフォルトの名無しさん:2010/03/19(金) 21:59:16
じゃあ死ね
8デフォルトの名無しさん:2010/03/20(土) 00:19:44
あっちで立てられなかったらこっちか

なるほど
9デフォルトの名無しさん:2010/03/20(土) 11:43:55
こういうスレほしかった!
けど、なんでゲ製作板で立てられなかったのだろか...
10デフォルトの名無しさん:2010/03/20(土) 13:02:37
11こども社長:2010/03/20(土) 18:44:59
スレ立て規制に引っ掛かってた。

>>10
重複ではないとおもふ。

ちなみに今はglutでシェーダーの勉強をしているんだよ。
12デフォルトの名無しさん:2010/03/20(土) 18:52:14
>>11
●持ちの俺がゲ製板に立て直してやるから、削除依頼出して死ね。
13デフォルトの名無しさん:2010/03/20(土) 20:16:57
ゲーム関係はこっちに立てるなと書いてあるだろうが
14こども社長:2010/03/20(土) 20:53:15
ゲームじゃなくてOpenGLゲームなのでOK。
さあ盛り上がりましょう。
15こども社長:2010/03/20(土) 21:18:04
こども社長が何人もいるwww
16デフォルトの名無しさん:2010/03/21(日) 17:06:32
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
17デフォルトの名無しさん:2010/03/22(月) 09:43:24
テクスチャの描画はどうやってやる?
18デフォルトの名無しさん:2010/03/22(月) 10:21:54
ググレカス
19デフォルトの名無しさん:2010/03/22(月) 17:16:16
床井先生の本を読め。
つーか板違い。
20デフォルトの名無しさん:2010/03/22(月) 21:46:57
ところでおまいらゲーム作った事あんの?
21デフォルトの名無しさん:2010/05/06(木) 10:33:36
OpenGLだけでキーボード処理はどーすんのかと。
22デフォルトの名無しさん:2010/05/06(木) 17:45:21
OpenGLが扱うレイヤーじゃねーだろと。
23デフォルトの名無しさん:2010/06/28(月) 13:37:59
>>20
2ヶ月ほど前にJavaScriptでパックマンを作ったことなら・・・
24デフォルトの名無しさん:2010/06/28(月) 20:00:57
JAVA+OpenGLってどうなの?
遅いの?
25デフォルトの名無しさん:2010/10/09(土) 23:29:43
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

で書く場合とどっちが早い??
26デフォルトの名無しさん:2010/10/10(日) 09:43:25
自分で試してみればいい
27デフォルトの名無しさん:2010/10/10(日) 18:09:29
ディスプレイリスとの方が速いと思うけど実際にやってみないと何とも。
それかVBOを使った方がいいと思う。
28デフォルトの名無しさん:2011/03/13(日) 20:28:18.80
OpenGLで開発環境整えるのってどうすればいい?
29デフォルトの名無しさん:2011/03/14(月) 05:29:42.67
emacs
30デフォルトの名無しさん:2011/03/18(金) 03:34:26.49
Visual C++ Express入れれば一式ついてくる
あとはglut32.libをどこかから拾ってくればいい
31デフォルトの名無しさん:2011/03/18(金) 17:33:10.93
wgl使えばglut32.libいらない
32天使 ◆uL5esZLBSE :2011/07/01(金) 18:12:17.61
Rubyバカにしてる子ってさ
変数に$ついてる言語触ってるって事だよね

いちいちSHIFT+4キーおして $ 打ちまくってる感触はどう?
33デフォルトの名無しさん:2011/07/01(金) 20:38:50.25
>>32
一概にそう言われてもメンブレンかメカニカルかだけでも
感触って違ってくるし。
自分の言っている事がいかにあいまいだか気づかない人って
バカだよね。
34デフォルトの名無しさん:2011/07/01(金) 21:42:30.10
35デフォルトの名無しさん:2011/07/01(金) 21:46:10.24
天然さん
36デフォルトの名無しさん:2011/07/01(金) 22:59:35.22
OpenGLってシェーダは文字列で渡せるんだけど
もう全部シェーダみたいに文字列にしてくれんかね。
そうなるとC以外の言語からOpenGL使うのすごく便利になると思うんだけど
そういう流れってないの?w
37デフォルトの名無しさん:2011/07/01(金) 23:44:46.38
ドライバーがいちいち文字列をパースしてGLコマンドにするのかよw
38デフォルトの名無しさん:2011/07/02(土) 15:13:27.21
>>36
面白い発想だねw
文字列ってわけじゃないけど、Plan9のグラフィックスAPIがそんな感じじゃなかったっけ。
39デフォルトの名無しさん:2011/07/03(日) 02:25:31.22
シェーダーコンパイル、事前コンパイル済みシェーダーバイナリ
とか、そのシェーダー文字列がどう処理されてるか仕組みを理解してからだね

ぶっちゃけ、どの言語のコンパイラだろうが
コンパイルして実行ってバッチレベルで
ソースコード文字列渡して同じ事できると思うよ
40デフォルトの名無しさん:2011/07/27(水) 00:26:01.72
GLSLが実行できないですけど、どうすればよいでしょうか?



http://akita-nct.jp/take/appendix/glsl/glsl_setting.html

をもとに、Microsoft Visual Studio 9.0を10.0に読み替えてライブラリを置きました。
コンパイルはできるけど実行するとアクセスバイオレーションになります。

windows Vista Visual Studio 2010
41デフォルトの名無しさん:2011/07/27(水) 00:46:18.10
どこでどうアクセスバイオレーションを起こしてるのか、デバッガで追えば?

シェーダソースをファイルから読めてないとか、そんなとこじゃないかと予想。
42デフォルトの名無しさん:2011/07/27(水) 20:42:33.73
>>41です。
デバッガで追うと、やはり、GLSLを使おうとしようとするところで、
エラーになりました。

グラフィックカードが対応していないんでしょうか?

ちなみに
Intel G33/G31 Express Chipset Family
メモリ合計 286MBです。
43デフォルトの名無しさん:2011/07/27(水) 20:57:55.46
具体的にはどこだよ。
44デフォルトの名無しさん:2011/07/27(水) 23:11:48.74
具体的には、この行です。
//シェーダーオブジェクトの作成
vertexShader = glCreateShader(GL_VERTEX_SHADER);
45デフォルトの名無しさん:2011/07/28(木) 00:07:50.91
そこで落ちるって、絶対GLSLとは無関係のところでしくじってる。
46デフォルトの名無しさん:2011/07/28(木) 00:49:48.34
そうなんですか。
どうやったら調べられますかね?

サンプルプログラムをそのまま実行しているだけなんで…
47デフォルトの名無しさん:2011/07/28(木) 01:05:54.72
まずGLSLに対応したGPUを買えと言いたい
48デフォルトの名無しさん:2011/07/28(木) 22:53:35.84
やっぱりGPUが対応していないってことなんですかね?
新しいの買うとしたら、
GLSLに対応しているかって、調べられますか?
49デフォルトの名無しさん:2011/07/28(木) 23:06:31.87
glGetString
50 忍法帖【Lv=13,xxxPT】 :2011/07/31(日) 01:56:13.71
glGetString(GL_VERSION)でバージョンが2.0以上でないとGLSLは対応してない。
新しいGPUを買うのなら、お店に行って「OpenGL3.0以上に対応したGPU下さい!」って言うんだ。
51デフォルトの名無しさん:2011/07/31(日) 11:13:44.13
店員:OpenGLってナンデスカ
52デフォルトの名無しさん:2011/07/31(日) 22:05:10.09
流石にOpenGL自体は知ってる人は多いだろうが
GPUの対応バージョンまでチェックしてる店員は一部だろうなあ
53デフォルトの名無しさん:2011/08/01(月) 00:03:22.83
まぁ今時nVIDIAかAMDなら、どんな低価格の買ってもGLSL動くっしょ
54デフォルトの名無しさん:2011/08/04(木) 14:38:41.13
自分の目の前にあるもの(眼鏡、ゴーグル、自分の武器、照準器、HUD、etc.)や
パラメータの表示など、どんなにカメラを動かしても(画面に対して)同じ場所に描かれる物体って
上手い描き方はありますか?
愚直にカメラ座標に近い、視線の正面にある座標を中心に描くしかないですか?
55デフォルトの名無しさん:2011/08/04(木) 14:46:15.22
gluOrtho2D とか言っても無駄かな。
56デフォルトの名無しさん:2011/08/04(木) 15:58:49.76
>>55
何となくその辺かなあとは思ったのですが
3D描画と組み合わせるときの手順がよくイメージできないのです

glViewport(...);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(...);
glMatrixMode(GL_MODELVIEW);
ループとかイベントとか {
glClear(...);
glLoadIdentity();
gluLookAt(...);
//以下、glTranslate系とかglRotate系とか描画とか
}

…とあったとして、Ortho2Dやその描画の処理はどのタイミングでやるのでしょうか?
むしろこの順番自体を崩さないとダメなのかなぁとかよく解らないのです
色々試そうにも、ちょっと弄ると真っ白になってしまったりしてる状況で…
57デフォルトの名無しさん:2011/08/04(木) 16:09:41.95
while(1) {

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(...);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(...);

適当に物体描写
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(...);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(...);

適当にHUD描写

glFlush();
}
58デフォルトの名無しさん:2011/08/04(木) 16:21:53.80
>>57
ありがとうございます、参考にしてやってみます
59デフォルトの名無しさん:2011/08/04(木) 18:43:54.19
でーーーーきーーーーたーーーーー!

>>57
改めて、ありがとうございました!
60デフォルトの名無しさん:2011/10/22(土) 23:04:58.78
>>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 する意味が無いですね
63デフォルトの名無しさん:2011/11/09(水) 19:49:22.96
なぜか描画の順番で色が変わったり妙な模様が出たりするよね
描画ツリー作るのが一番正しいんだろうけど面倒臭いです
64デフォルトの名無しさん:2011/11/10(木) 02:22:24.63
透明度のあるのテクスチャが、横から見ると+みたいに交差してるのを
描画するにはどうするのが良いんでしょうか?
テセレーション?を行うのでしょうか?
65デフォルトの名無しさん:2011/11/10(木) 02:51:12.74
普通のαブレンディングで処理するなら、交差部分で分割して、奥から描写するしかないね。
66デフォルトの名無しさん:2011/11/10(木) 13:35:56.19
シェーダーが使えないならポリゴンを細かく分割してZソートのあと奥から描画。
67デフォルトの名無しさん:2011/11/10(木) 16:09:35.16
>>65
>>66
なるほど。ありがとうございます。
ちなみに、シェーダーを使うと別のやり方があるのでしょうか?
68デフォルトの名無しさん:2011/11/10(木) 17:40:11.76
不透明ポリゴンを描画した後にピクセルシェーダーでZの値をみながらブレンドを自前でします。
透過ポリゴンの描画はみんな苦労しているところなのでググった方がわかりやすい解説がでてくるよ。
69デフォルトの名無しさん:2011/11/10(木) 20:11:43.96
うん
70デフォルトの名無しさん:2011/11/10(木) 22:53:25.41
>>68
ありがとうございます。
ググろうにも単語がわからないレベルだったのですが、助かりました・・・
71デフォルトの名無しさん:2011/11/11(金) 01:27:53.14
一応、ポリゴンを分割しないで、ソートもしないで、交差する半透明ポリゴンを
正しく描画する手法も無いではないけど・・・重いんだよねぇ。
興味があるなら depth peeling でぐぐってみるといいかも。
72デフォルトの名無しさん:2011/11/12(土) 15:56:54.40
ポリゴンの高さにキャラクターを立たせる処理を作成したのですが、ポリゴンが
複数ある場合、キャラクターのxz座標で位置が一致するポリゴンを調べ、そのポリゴン
の高さに合わせると考えています。
ポリゴンとの当たり判定を考える場合、常にどのポリゴンに当たるかを調べてポリゴンを特定
してから処理を行うのでしょうか?
73デフォルトの名無しさん:2011/11/12(土) 17:29:12.06
>>72
「ポリゴンの高さにキャラクターを立たせる処理」をしているのなら、
常にどのポリゴンに当たるかを調べる必要がある

ただ、常に「全ての」ポリゴンと当たり判定をする必要は無い
キャラクターの近隣にあるポリゴンのみと当たり判定すればいい
74デフォルトの名無しさん:2011/11/12(土) 17:33:42.31
sage忘れてた

ついでに言うと、キャラクターの足部分の「一点のみ」と、
地面の「一点のみ」との当たり判定によってキャラクターを立たせる処理をすると、
キャラクターや地面の凹凸の細かさや高低差の激しさによっては
キャラクターが地面にめり込んだように見えてしまうかも知れん
75デフォルトの名無しさん:2011/11/12(土) 18:06:32.01
近くのポリゴンを調べればいいんですね
他の衝突判定も同じ考え方でやってみます。

判定は一点じゃなくて複数点でした方が正確に出せるってことですかね…
色々試してみます。

ありがとうございました。
76デフォルトの名無しさん:2011/11/12(土) 18:44:25.75
>>75
> 判定は一点じゃなくて複数点でした方が正確に出せるってことですかね…

ちょっと違う
「正確」の意味がちょっと曖昧だけど、
一点で判定しようが複数点で判定しようが、面と直方体で判定しようが、
判定自体は正確に計算すれば正確にできる(端折れば端折った分だけ不正確になる)

私が言いたかったのは、例えばキャラクターの踵の一点と地面の一点だけで判定した場合、
その判定に基づいてキャラクターを地面に立たせると、つま先が地面にめり込む姿が
プレイヤーに丸見えになる場合もあるよ、ということ

まぁこれらは一点判定の応用で解決できる可能性の高い問題だから、
まずは一点判定をがんばって実装してください
たぶん、いずれは自然と上記の問題に向き合わなくちゃならなくなるし
77デフォルトの名無しさん:2011/11/14(月) 00:13:15.49
そういうことだったのですか…
今使用しているモデルは単純なものですが、後で複雑な形のモデルも使用すると思うので
上の問題が発生することを覚えておきます。
ありがとうございました。
78デフォルトの名無しさん:2011/11/20(日) 10:59:19.25
いえいえ
79デフォルトの名無しさん:2012/08/24(金) 12:46:19.57
てす
80デフォルトの名無しさん
h