くだすれOpenGL(超初心者用)
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/11/06(日) 01:29:26もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
OpenGL使いが優しくコメントを返しますが、
お礼はOpenGLの布教と初心者の救済をお願いします。
OpenGL Home Page
http://www.opengl.org/
0153デフォルトの名無しさん
2006/06/20(火) 00:53:43妙にツボった。
0154デフォルトの名無しさん
2006/06/20(火) 11:14:02glLoadIndetity();
glOrtho( 0, 100, 100, 0, -1, 1 );
glMatrixMode( GL_MODELVIEW );
glLoadIndetity();
glBegin( GL_LINE_STRIP );
glColor3f( 1, 0, 0 );
glVertex2i( 1, 1 );
glVertex2i( 3, 1 );
glVertex2i( 3, 3 );
glVertex2i( 1, 3 );
glVertex2i( 1, 1 );
glEnd();
のようにして四角の枠を描画しようとしているのですが、
下のようになぜか左上のドットが欠けてしまいます。
■■
■ ■
■■■
これは何が原因でしょうか?
0155デフォルトの名無しさん
2006/06/20(火) 15:35:080156デフォルトの名無しさん
2006/06/21(水) 02:41:50いろんなサンプルを見るとglutCreateWindow(char *name)で
ウインドウをつくっていますが、このウインドウをつくらずに、
macのapiでつくったウインドウにデータを描画するといったことは出来ますか
(つまり他のソフトに組み込みたいのです)?出来るなら方法を教えてもら
いたいのですが。よろしくお願いします。
0157デフォルトの名無しさん
2006/06/21(水) 04:30:47勿論出来る。Mac の API で作ったウィンドウに OpenGL の絵を描画出来なかったら
Glut を実装出来ないでしょ。
方法は知らんけど、これとかはどう?
ttp://son-son.sakura.ne.jp/mt/blog/2006/04/opengl_cocoa.html
Cocoa 以外でも基本的には一緒だ。
0158デフォルトの名無しさん
2006/06/21(水) 11:07:20ってことは同様に Windows でもコンソールアプリじゃなく、自作の Windowアプリの
なかに描画することはできるのでしょうか?
キーメッセージなどはどうやってくるのでしょうか?
0159154
2006/06/21(水) 11:41:10レスありがとうございます。
自分のウィンドウの大きさは適当な大きさで、
ビューポートの大きさを
glViewport( 0, 0, 100, 100 );
としていました。
それで glOrtho や glViewport の値を
色々いじってみたのですがやはり駄目でした。
ただ座標値を
glVertex2i( 1, 1 );
glVertex2i( 4, 2 );
glVertex2i( 4, 4 );
glVertex2i( 2, 4 );
glVertex2i( 1, 1 );
のようにしてみたら
一応欠けることなく描画されました。
とりあえず当面はこの方法で対処したいと思います。
0160156
2006/06/21(水) 14:20:56返答ありがとうございました。まだよくわかっていませんが、
この返答を糧にがんばってみます。
0161デフォルトの名無しさん
2006/06/21(水) 21:35:57マップの座標を動かせばいいのですか?それともキャラ+カメラの座標wp動かすのですか?
HPの表示とかするつもりなのでどちらが向いてるか教えてください。
0162デフォルトの名無しさん
2006/06/21(水) 21:47:25そゆ質問が出る状況では、まだ無理>3Dのアクションゲーム
0163161
2006/06/22(木) 17:59:08諦めます
0164デフォルトの名無しさん
2006/06/23(金) 02:55:55公式で落としてきたdll,lib,headerをwebなどを参考にしながらインストールし、
プログラムをコンパイルしてみたところ、
"LINK : fatal error LNK1104: ファイル 'winmm.lib' を開くことができません。"
表示されて、コンパイルできません。
C:\Program Files\Microsoft Visual Studio 8\VC\libに'winmm.lib'が存在せず、
WEB上で探してみたのですが、見つかりません。WEBの情報をもとに、
DLLから変換しようともしてみたのですが、うまくいきません。
どうすればいいでしょうか?
非常に初歩的な質問で申し訳ありません。
どなたかわかる方いらっしゃいましたら、教えていただけたらと思います。
どうかよろしくお願いします。
0165デフォルトの名無しさん
2006/06/23(金) 03:08:01スレ違いだな。
ヒント:Platform SDK
0166164
2006/06/23(金) 19:17:47「Platform SDK」について調べてみたところ問題は解決いたしました。
スレ違いの質問に対して、親切にもヒントを与えてくださり誠に感謝します。
本当にありがとうございました。
0167デフォルトの名無しさん
2006/06/29(木) 10:22:45これから勉強始めようと思ってるのですが。
0168デフォルトの名無しさん
2006/06/29(木) 15:58:01UNIX系やMac系でも標準API
ただし、Windowsだけに限れば終わったも同然
VistaからはDirectXに命令が変換されて実行されるので6割程度しか速度出ない。
ま、WindowsしかターゲットにしないならDirectXいっときな。
ただWindowsでしか動かせないけどw
0169デフォルトの名無しさん
2006/06/29(木) 23:00:14VistaからOpenGLが遅くなるというのは半分以上嘘。
WDMを切れば今まで通りだし、ベンダが新しいICDを使うドライバを
書いてくれればWDMと共存が可能。
OpenGLスレ Part10
ttp://pc8.2ch.net/test/read.cgi/tech/1141034983/185
ttp://blogs.msdn.com/kamvedbrat/archive/2006/02/22/537624.aspx
0170167
2006/06/30(金) 00:43:29光通信専門なんでWDMと言われると波長分割多重しか思いつきませんが、やっぱ違う・・・な?w
ありがとうございました―。
0171デフォルトの名無しさん
2006/06/30(金) 20:37:50お前が終了なのだ。
0172デフォルトの名無しさん
2006/07/01(土) 01:00:22調べたところ国内サイトで再配布可能と言うところが2つほどあったのですが、
公式には確認できませんでした。
0173デフォルトの名無しさん
2006/07/01(土) 01:14:57glut32.dll の添付ドキュメントにちゃんと書いてあるよ?
曰く、パブリックドメインではないが、ライセンス料無しで配布して構わない。
原文
COPYRIGHT:
The OpenGL Utility Toolkit distribution for Win32 (Windows NT &
Windows 95) contains source code modified from the original source
code for GLUT version 3.3 which was developed by Mark J. Kilgard. The
original source code for GLUT is Copyright 1997 by Mark J. Kilgard.
GLUT for Win32 is Copyright 1997 by Nate Robins and is not in the
public domain, but it is freely distributable without licensing fees.
It is provided without guarantee or warrantee expressed or implied.
It was ported with the permission of Mark J. Kilgard by Nate Robins.
THIS SOURCE CODE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OR MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
OpenGL (R) is a registered trademark of Silicon Graphics, Inc.
0174デフォルトの名無しさん
2006/07/01(土) 08:50:11glut.hやglut.lib,glut.dilなども所定のファイルに置いたのですが
プログラムをビルドしたら、
d:\c3-2\c3-2.c(4) : fatal error C1083: Cannot open include file: 'GL/glut.h': No such file or directory
というエラーがでてきてしまいました。
何がいけなかったのでしょうか?超初心者ですいません
0175デフォルトの名無しさん
2006/07/01(土) 10:41:31No such file or directory
0176デフォルトの名無しさん
2006/07/01(土) 10:53:39よく見てみればOpenGLによる3次元CGプログラミングのサンプルコードか。
俺も最初にOpenGL触った時の本はこれだったな。
エラーが出てるって事は所定のフォルダにないってことだからよくチェックしろ。
ExpressEditionとはちょっと違うかもしれないが、具体的には標準のパスでインストールすると
C:\Program Files\Microsoft Visual Studio 8\VC\include\
ここの中にGLってフォルダを作ってその中に放り込む。
あとPlatformSDKはインストールしたか?ExpressEditionでは別途必要になるぞ。
0177172
2006/07/01(土) 11:22:53ありがとうございます。
見落としてました・・すいません・・・
0178デフォルトの名無しさん
2006/07/01(土) 11:37:37openGLで検索するとアニメーションとかはあるんだけどグラフとかはなくて、
openGL グラフで検索すると商品紹介ばっかりで、目当てのものHITしにくい・・・
0179デフォルトの名無しさん
2006/07/01(土) 12:14:07OpenGLには「グラフを描画する」といった、特定の目的用の機能はついてない。
つまり、OpenGLとグラフは直に結び付いてない。
なので、分けて考えることが出来ると思うよ。
1) OpenGLで何が出来て、何が出来ないのか
2) 「OpenGLで出来ること」を利用してグラフを描くにはどうすればいいか
こんな事を調べたり、考えてみれば良いと思う。
0180デフォルトの名無しさん
2006/07/01(土) 14:02:07ありがとうございます
でも今度は
LINK : fatal error LNK1104: ファイル 'winmm.lib' を開くことができません。
ってのが出てきちゃったんですが・・・・
0181デフォルトの名無しさん
2006/07/01(土) 15:14:080182デフォルトの名無しさん
2006/07/01(土) 17:18:13PlatformSDKはインストールするだけで良いんですよね?
それでもエラーが消えなくて
0183デフォルトの名無しさん
2006/07/01(土) 17:46:52なかなかネット検索で見つからないのはそれが原因ですか・・・
GL_TRIANGLEとか使いまくってなんとか形には出来ました
恐ろしく不恰好ですがorz
また問題発生したらよろしくお願いします
0184デフォルトの名無しさん
2006/07/01(土) 17:48:22Tesselatorに丸投げしちまえばいいじゃん。
0185デフォルトの名無しさん
2006/07/01(土) 18:24:58分かりやすく初心者にとって良い本だとは思いますが、重要な所をかなり端折って書かれてるような気がします。
一通り読み終えたら別の本に移ろうと思いますが、程良いステップアップになるオススメの本あったら教えて下さい。
0186デフォルトの名無しさん
2006/07/01(土) 18:57:29端折ってるなんて前書き読めばわかるだろうに。
もし網羅的にやるんなら赤本でもどうぞ。
0187デフォルトの名無しさん
2006/07/01(土) 21:59:46つか性質が全く異なる本勧めてどうする。
0188デフォルトの名無しさん
2006/07/01(土) 22:52:13別の本に移るっていってるでしょ?
むしろ同じような代物勧めてどうするの?
0189デフォルトの名無しさん
2006/07/02(日) 09:08:190190デフォルトの名無しさん
2006/07/02(日) 18:16:59164ですが、VC++expressの方の設定もいじらないといけないみたいですよ。
自分の場合、ツール>オプション>プロジェクトおよびソリューションの左の+ボタンを押す>
VC++ディレクトリ
で、実行可能ファイルにC:\Program Files\Microsoft Platform SDK\Bin
インクルードファイルにC:\Program Files\Microsoft Platform SDK\Include
ライブラリファイルにC:\Program Files\Microsoft Platform SDK\Lib
を入れたらできました。
この前の恩返しがしたくて…
スレ汚しすみません。
OpenGLってたのしいですね!!
0191デフォルトの名無しさん
2006/07/06(木) 09:16:130192デフォルトの名無しさん
2006/07/06(木) 11:25:34今を目一杯満喫するがいいサ
0193デフォルトの名無しさん
2006/07/11(火) 18:17:56塗りつぶされた三角形をかいてから線描の三角形を描くのでしょうか?
一発でできませんよね?
0194デフォルトの名無しさん
2006/07/11(火) 23:10:43そして、その関数をどうするかって話だじぇ
0195デフォルトの名無しさん
2006/07/12(水) 00:26:24それを(0〜n1, 0〜n2)にする方法はどのようにすればよろいしいの。
0196デフォルトの名無しさん
2006/07/12(水) 00:28:170197デフォルトの名無しさん
2006/07/12(水) 00:28:350198デフォルトの名無しさん
2006/07/12(水) 13:20:14好き勝手な (x0,y0)-(x1,y1) で使っていますけど。。。
あほな例題が多いのが欠点ですね。。日本語のHPは; (-1,-1)-(1,1) だと思いこんでいる。。
0199デフォルトの名無しさん
2006/07/12(水) 18:23:24glOrtho() あたりを調べてみる
0200デフォルトの名無しさん
2006/07/13(木) 14:35:55ありがとう、できました。
windowのサイズで(例えば、640x480)とかで座標を指定するのは
一般的でないのですかね?
あと、z軸っていうのはこう言ったときどう指定しているのでしょうか
(よくわからなかったのでそのまま-1〜1にしましたが)?
0201デフォルトの名無しさん
2006/07/13(木) 16:22:190202デフォルトの名無しさん
2006/07/13(木) 20:38:19glTexSubImage2Dって
対象のテクスチャをどうやって指定するの?
0203デフォルトの名無しさん
2006/07/13(木) 20:52:20昔見たようなレスだがOpenGLにそんなもんない。
>>202
現在バインドされているテクスチャが対象。
0204202
2006/07/13(木) 21:02:21サンクス
0205デフォルトの名無しさん
2006/07/14(金) 05:44:09glVertex2f(x1, y1);
glVertex2f(x2, y2);
glVertex2f(x3, y3);
glVertex2f(x4, y4);
glEnd();
で囲まれた部分を塗りつぶすにはどうしたらいいんですか?
0206デフォルトの名無しさん
2006/07/14(金) 19:31:590207デフォルトの名無しさん
2006/07/15(土) 01:22:14そうでなくて、GL_LINE_LOOPだと最初と最後が繋がりますよね。
そうしたら、値によっては四角形ではなくて蝶々だったりリボンのような三角形を
二つ向かい合っているような図形になるんですよ。
GL_POLYGONで塗りつぶしすと違う形になるのです。
つまり上の図形を枠に内面を塗り潰したいです。
だれか教えて下さい。よろしくお願いします。
0208デフォルトの名無しさん
2006/07/15(土) 08:11:14GL_POLYGONは凸状のねじれの無いポリゴンのみ正確に描ける。(3角形に分割している)
大体リボンの形は4角形では無い。(一枚の紙(4角形)をどうねじってもリボンにはならない)
ねじれる可能性があるなら、自分で2つの領域に分けてください(交点を求める)
4点を順にa,b,c,dとするとdot( cross( ab, ac) , corss( ac, ad ) )が負ならねじれてるのかな。(嘘かも)
そんな感じでがんばってください。
0209デフォルトの名無しさん
2006/07/15(土) 12:14:241.三角形abdの領域を1で埋める。
2.三角形bcdの領域を反転する。
3.1で埋められている領域に色を塗る。
とかやればできるかな?
ステンシルってそんなふうに使えるのかな?よく知らんけど。
0210デフォルトの名無しさん
2006/07/17(月) 00:56:08面白いけどちょっと境界が怪しそうだね
と思ったら赤本に似たようなの載ってた
0211デフォルトの名無しさん
2006/07/17(月) 08:50:460212デフォルトの名無しさん
2006/07/22(土) 10:19:41どこから調べればいいか分かりません。
何か糸口になるようなヒントをいただければありがたいです。
0213デフォルトの名無しさん
2006/07/22(土) 14:54:370214デフォルトの名無しさん
2006/07/22(土) 20:41:520215デフォルトの名無しさん
2006/07/25(火) 06:33:06ここの一番下にあるサンプル動かしたらCPU使用率がずっと100%になるんですが
何処が原因なんでしょうか
0216デフォルトの名無しさん
2006/07/25(火) 18:47:390217デフォルトの名無しさん
2006/07/25(火) 23:16:37開発環境はXP-VC++2003です。
vcのlibフォルダにopengl32.libなどは入っています。
以下のようなエラーが出ます。
test error LNK2019: 未解決の外部シンボル __imp__glClear@4 が関数 "void __stdcall display(void)" (?display@@YGXXZ) で参照されました。
test fatal error LNK1120: 外部参照 16 が未解決です。
0218デフォルトの名無しさん
2006/07/25(火) 23:23:500219デフォルトの名無しさん
2006/07/25(火) 23:25:58それも試しました
0220デフォルトの名無しさん
2006/07/26(水) 10:06:33その球の後ろに何もない状態なら普通に表示されるのですが、後ろに物を置くと穴が開いてしまいます。
原因分かる方、ご教授お願いしますm(_ _)m
0221デフォルトの名無しさん
2006/07/26(水) 16:11:58だけだと可哀想なのでもうちょっとヒント
Zバッファによる陰面消去は、透明ありだといろいろ問題が発生する
対象物をZソートしてみ
0222デフォルトの名無しさん
2006/07/27(木) 08:47:25調べてみたのですが、Zソートは陰面消去の一つの方法という事みたいですが、
これをどうopenglで表現するのか・・・もう少し調べてみます。。
0223デフォルトの名無しさん
2006/07/27(木) 12:15:47非透明を全部描いてからデプスバッファを書き込み禁止にして半透明を描けばokになる場合もあるかと
0224デフォルトの名無しさん
2006/07/27(木) 13:50:17glDepthMask(GL_FALSE)で無効化してから不透明を書いても、やはりダメでした。。
やりたいことは、不透明な物の周りに不透明な球をいくつか置きたいです。
0225223
2006/07/27(木) 15:31:01glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
でうまくいくとかいう話ではない?あとは球の裏向きポリゴンのカリングとかかな...
でも不透明な周りに不透明で重なりあうなら、正確にはZソートしないとダメかもね。
が、glDepthMask(GL_FALSE)で穴が開くのはそれはそれで変だけど。
0226デフォルトの名無しさん
2006/07/27(木) 15:46:21球の裏向きをカリングするようにしたら、正確に表示されるようになりました。
以前ポリゴンを両面化したものを表示しようとしたら筋が入ったので、
それも関係しているのでしょうかね。。
みなさん、親切にご回答いただきありがとうございましたm(_ _)m
0227デフォルトの名無しさん
2006/08/01(火) 16:38:30glViewport(0, 0, 100, 100);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0. , 100. , 0. , 100. , -1. , 1.);
gluPerspective(45, (double)w / (double)h, 1.0, 100.0);
みたいに設定した0~100の図形だと上手く回転できません。
いろいろ調べたけれどわかりません。
回転のときは-1.~1.の範囲で描画しないとダメなのでしょうか?
0228デフォルトの名無しさん
2006/08/02(水) 00:48:05マトリクスによる座標変換の意味が分かってないだろ。
0229デフォルトの名無しさん
2006/08/02(水) 20:26:00あれいいの?
OpenGL関連の書籍って数少ないからどれ買うか迷う・・
0230デフォルトの名無しさん
2006/08/02(水) 21:15:27いうなればDCソフトみたいなもんだ。
0231デフォルトの名無しさん
2006/08/25(金) 07:14:50どっちが描画早いですか?
あほっぽい質問ですいません...
0232デフォルトの名無しさん
2006/08/25(金) 13:41:08プライマリバッファへのポインタはどうやって取得できますか?
DirectXだとプライマリサーフェイスをLockすればいいんですが…
0233デフォルトの名無しさん
2006/08/25(金) 13:48:140234デフォルトの名無しさん
2006/08/25(金) 18:17:56GLubyte * bits;
GLint width,height;
width = 513;
height = 407;
bits = (GLubyte *) malloc( (width * height)*3 );
::glReadPixels( 0,0,width,height,GL_RGB,GL_UNSIGNED_BYTE, bits);
このように指定した際に、glReadPixelsのところで必ずエラーがでます。
いろいろ調べたところ、widthとheightの値がこの数値の組み合わせのときのみ起こるようです。(513,407)
実際にはこのコードは別の3Dツールのプラグインのために書いているのですが、
その3Dツールが原因以外になにか原因になりそうなことありますでしょうか?
0235デフォルトの名無しさん
2006/08/25(金) 18:47:05ReadPixelする前にコレ
↓
glPixelStorei(GL_PACK_ALIGNMENT,1);
0236234
2006/08/25(金) 19:06:12ありがとうございます!できました〜。
glPixelStoreiでどういうふうにデータが格納されてるのかOpenGLに伝えないといけなかったんですね。
どうもありがとうございました。
0237デフォルトの名無しさん
2006/08/26(土) 11:49:58デフォルトではwidthは4バイトの倍数と勝手に仮定されちゃうわけ。
その方が処理が速いから。
だから513って設定しても、内部では516として扱われちゃう。
そうなるとmallocで割り当てたサイズじゃ足りないからエラーが出ちゃうの。
だからglPixelStoreiで「widthは1バイトの倍数でお願い」ってやれば解決するの。
0238234
2006/08/26(土) 15:13:57解説ありがとうございます。よりくわしく理解できました。
…というか、glPixcelStoreiをちょっと違う風に誤解してました。
重ね重ねありがとうございます。
0239デフォルトの名無しさん
2006/08/29(火) 01:22:44glCopyTexImageでフレームバッファをテクスチャー化して、gluBuild2DMipmapsでミップマップを作ってみたり、
glReadPixcelでフレームバッファを読み取って、gluScaleImageをつかって拡縮をしてみたりして、
ぼかしたテクスチャーをつくっているんですが、いずれもとても重たくて使い物になりません。
他になにかいい方法はありますか?
0240デフォルトの名無しさん
2006/08/29(火) 01:33:320241239
2006/08/29(火) 15:53:28実はまだ使ったことないんですが、がんばってみます。
0242デフォルトの名無しさん
2006/08/31(木) 14:09:47横スクロールでティアリングしまくって困ってます。
0243デフォルトの名無しさん
2006/08/31(木) 15:04:540244242
2006/09/06(水) 12:48:13レスサンスコ
でもwglGetProcAddress("wglSwapIntervalEXT")でNULLを返されちゃう
ウチの環境ではvsync同期は不可能なのかしらん。
0245243
2006/09/06(水) 16:33:00とりあえずドライバを新しくしてみるとか。
wglSwapIntervalEXTはWGL_EXT_swap_controlなので
それが使えるかどうかglinfoとかで調べてみるとか
0246デフォルトの名無しさん
2006/09/07(木) 19:59:390247デフォルトの名無しさん
2006/09/07(木) 20:54:310248デフォルトの名無しさん
2006/09/07(木) 21:09:550249デフォルトの名無しさん
2006/09/07(木) 21:22:280250デフォルトの名無しさん
2006/09/07(木) 22:04:450251デフォルトの名無しさん
2006/09/08(金) 05:02:56綺麗にみえる頂点の法線を求めるにはどうすればいいの?
ぐぐったら、面法線と面法線を合成して出した頂点法線との内積を
スムーズジング角度のradのcosと比較して
面法線を使うか頂点法線を使うか切り替えてる例があったけど、
やってみたらメタセコの表示とだいぶ違うし・・・
上を参考に頂点ごとに面法線を使うか頂点法線を使うかのフラグ配列作って
フラグを見ながら頂点法線を使うのだけ面法線を合成した頂点法線作って見たけど
うまく行かなくてもうわけわかめです
0252デフォルトの名無しさん
2006/09/08(金) 08:57:15プラグインSDKにそれのコードあるよ。
■ このスレッドは過去ログ倉庫に格納されています