トップページ⇒tech
992コメント291KB

OpenGLスレ Part19

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2012/11/27(火) 22:56:00.79
クロスプラットフォームの3D API OpenGLに関する話題を扱うスレッド。
現在の最新バージョンは4.3
http://www.opengl.org/
http://www.opengl.org/wiki/Main_Page

== OpenGLと一緒に使われるツール&ライブラリ ==
苦労したくなかったらとりあえず入れとけ。
・glx:    XからOpenGLを使うためのライブラリ。普通は直接は使わず意識する事はない
・glut:   クロスプラットフォームなツールキット。でもさすがに古くさい
・GLFW   より新しいマルチプラットフォームなツールキット
・glew:   これを入れないと拡張機能が使えないor使いにくい
・glxgears: 歯車が回るベンチマーク。-infoでOpenGLのバージョンが見られる。OpenGLの動作確認はこれで
・glxinfo:  自分の使っているカードのOpenGLの機能が全てリストアップされる。
・OpenTK  C#からOpenGLを簡単に使えるようになる。VC#の強力なIntellisenseとあわせてサクサク開発可能。
・OpenSceneGraph: OpenGL を高度に抽象化し、利便性を高めたラッパー。C++ ライブラリ
・OpenGL Mathematics (GLM): GLSL 文法ライクの C++ 数学ライブラリ

== チュートリアルサイト ==
床井研究室: http://marina.sys.wakayama-u.ac.jp/~tokoi/oglarticles.html
OpenGL de プログラミング: http://wiki.livedoor.jp/mikk_ni3_92/
NeHe:    http://nehe.gamedev.net/
Tutorials for OpenGL 3.3 and later  http://www.opengl-tutorial.org/
Learning Modern 3D Graphics  Programming http://www.arcsynthesis.org/gltut/

== 前スレ ==
OpenGLスレ Part18
http://toro.2ch.net/test/read.cgi/tech/1334374186/
0002デフォルトの名無しさん2012/11/27(火) 22:56:30.42
== 必読書 ==

-- CG入門 --
OpenGL以前の普遍的なCGの概念。
CG-ARTS協会の3冊は初心者向け。あとの2冊は上級者向け。
・コンピュータグラフィックス (CG-ARTS協会)
・ビジュアル情報処理 (CG-ARTS協会)
・ディジタル映像表現 (CG-ARTS協会)
・ゲーム制作者になるための3Dグラフィックス技術
・ビジュアルコンピューティング 3次元CGによる画像生成

-- 初心者用 --
・GLUTによるOpenGL入門
・GLUTによるOpenGL入門2 テクスチャマッピング
・OpenGL ES 2.0 プログラミングガイド

-- 上級者用 --
・OpenGL Shading Language (橙本)
・Shader Xシリーズ
・GPU Gemsシリーズ
・GPU Proシリーズ
0003デフォルトの名無しさん2012/11/27(火) 22:57:14.49
== 必読書2 ==

-- モダンなOpenGL --
シェーダーベースの最新のOpenGLの学習
・OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング
・OpenGL SuperBible: Comprehensive Tutorial and Reference
・OpenGL 4.0 グラフィックシステム

-- 数学 --
・ゲームプログラミングのための3Dグラフィックス数学
・実例で学ぶゲーム3D数学
・ゲーム開発のための数学・物理学入門

-- 過去の書籍 --
有名だが古いバージョンのOpenGLをもとに書かれているためすでに時代遅れ
通常は買う必要はない
・OpenGLプログラミングガイド 原著第5版 (赤本)
・OpenGL Reference Manual (青本)
0004デフォルトの名無しさん2012/11/27(火) 23:01:43.87
== チュートリアルサイト2 ==
OpenGL Step By Step:    http://ogldev.atspace.co.uk/
OpenGL Samples Pack:    http://ogl-samples.g-truc.net/
0005デフォルトの名無しさん2012/11/27(火) 23:02:54.12
== 過去スレ ==
Part18: http://toro.2ch.net/test/read.cgi/tech/1334374186/
Part17: http://toro.2ch.net/test/read.cgi/tech/1321350331/
Part16: http://hibari.2ch.net/test/read.cgi/tech/1309182662/
Part15: http://hibari.2ch.net/test/read.cgi/tech/1289992928/
Part14: http://hibari.2ch.net/test/read.cgi/tech/1263901596/
Part13: http://pc12.2ch.net/test/read.cgi/tech/1247349324/
Part12: http://pc12.2ch.net/test/read.cgi/tech/1221215309/
Part11: http://pc11.2ch.net/test/read.cgi/tech/1177523018/
Part10: http://pc11.2ch.net/test/read.cgi/tech/1141034983/
Part 9: http://pc8.2ch.net/test/read.cgi/tech/1132403929/
Part 8: http://pc8.2ch.net/test/read.cgi/tech/1126267690/
Part 7: http://pc8.2ch.net/test/read.cgi/tech/1118151979/
Part 6: http://pc8.2ch.net/test/read.cgi/tech/1105612993/
Part 5: http://pc5.2ch.net/test/read.cgi/tech/1100085657/
Part 4: http://pc5.2ch.net/test/read.cgi/tech/1091724463/
Part 3: http://pc5.2ch.net/test/read.cgi/tech/1067529308/
Part 2: http://pc2.2ch.net/test/read.cgi/tech/1039984523/
Part 1: http://pc3.2ch.net/tech/kako/981/981044659.html (dat落ち)
0006デフォルトの名無しさん2012/11/28(水) 06:31:29.87
おつおつ
0007デフォルトの名無しさん2012/11/28(水) 17:26:03.79
機能の整数テクスチャーへの書き込みを質問した者だけど
翻訳された4.0の仕様書のglReadPixelsとかglClampColorの項目を何回読んでも理解出来なかったので
ギブアップして公式の4.2の仕様書を読んだら加筆訂正されていてワロタ。すげーわかりやすい
やっぱり原文からして意味不明だったのね・・・
結局全パターンについてテストケースを書いて1つずつ確認して言ったら
あちこち間違えまくっていたので修正したら思った通りの動作だった
あとAMDのGPUだとglColorClampが無視される。
つまり固定小数バッファーの時は必ずクランプされ(まあ当然だ)、
浮動小数バッファーと整数バッファーの時はまったくクランプされない。
(そのままの値が取得できる)
浮動小数バッファーのクランプ設定は使いそうな気がするけど、まあいいや
C#のOpenTKが内部で握りつぶしているのかも
0008デフォルトの名無しさん2012/11/29(木) 10:31:34.70
むむ、データフォーマットをGL_FLOATにした上で、ピクセルシェーダで処理をした結果を
戻させても内部では8bitで処理されてる?
例えばフラグメントシェーダで単色グラデーションを作ってGL_FLOATで吐き出させても
255段の階段が見えてしまってるんだけど、俺がどこかでミスってる?それともこういうもの?
0009デフォルトの名無しさん2012/11/29(木) 11:29:51.76
ディザリング有効にしてるか
0010デフォルトの名無しさん2012/11/29(木) 12:48:35.95
>>8
んなわけない
それはinternalFormatにRGB8(=固定小数8bit)を指定した時の動作
ちゃんとRGB8fにしてるか? 
可能性は低いがGPUが浮動小数バッファーに対応してなくて固定小数バッファーを使った可能性もある
glTexLevelParameterでGL_TEXTURE_INTERNAL_FORMATを指定して実際に確保した内部フォーマットを確認してみるがよろし
0011デフォルトの名無しさん2012/11/29(木) 13:08:58.88
✘ RGB8f
○ RGB16f, RGB32f
ってかGL_FLOATって何だよ。glGetTexImageのformatか?
それはテクスチャーをCPU側にコピーする時の(CPU側の)形式なので、
コピー元のテクスチャーをRGB8で作っていたとしたらそもそも255階調しか存在しない
0012デフォルトの名無しさん2012/11/29(木) 14:36:30.00
このゲームわざわざ50vs50である必要がないよね
仲間と協力してプレーしている感がまったくない
クランもないし・・・
CBだけでお腹いっぱいになってしまった
0013デフォルトの名無しさん2012/11/29(木) 14:40:26.44
FEZスレの誤爆か。
0014デフォルトの名無しさん2012/11/29(木) 19:47:27.36
>>10
レスありがとう
やっぱりそっちが問題だったのね、そっちはどこかの説明で色の数とだけあったから
そこで指定できるのは成分数だけかと思った
確認してきます
0015デフォルトの名無しさん2012/11/30(金) 07:52:58.27
OSX Mountain Lionな環境な人から情報求む。

gl3wっていうOpenGLのCore Profileを有効にしてくれるライブラリを試してるんだけど、OSXをサポートしてるってサイトには書いてあるのに、サンプル(test.c)を動かしてみると、最初の初期化(gl3wInit())で失敗する……orz

他の人どう? 暇がある人は試してみて。
0016デフォルトの名無しさん2012/11/30(金) 21:59:30.36
GUIツールキット側が対応してないのかもな
GLFWとかQtとかなら行けるんじゃないか?

あとはmacでOpenGLしてそうな人に聞くとかか
ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?blogcategory=GLFW
0017デフォルトの名無しさん2012/12/01(土) 05:02:45.24
>>15
Python起動するみたいだけどスクリプト(gl3w_gen.py)は正しく実行できてるの?
0018デフォルトの名無しさん2012/12/01(土) 09:34:48.38
>>16
公式ページによると、標準のGLUTでいけるみたいなことが書いてあるんだけど、
それができずに困ってる。
ちなみにQtでも試してみたけど、ダメでした……。

>>15
gl3w_gen.pyは正しく実行できてる。
というかこれを実行しないとライブラリのCファイルが取得できないので。
0019デフォルトの名無しさん2012/12/01(土) 17:02:20.83
馬鹿には無理
0020デフォルトの名無しさん2012/12/01(土) 17:11:56.68
まあ情報が多いWindowsでやるのが楽ですわな
0021デフォルトの名無しさん2012/12/01(土) 17:14:51.85
マカーには無理
0022デフォルトの名無しさん2012/12/02(日) 00:43:54.38
Androidで地図アプリっぽいのを作りたいと思います。数十個のjpg画像をタイル状に配して2本指で拡大したりするものです。
glDrawTexfOESで画像描画するとGPUが動員されて速いそうなので、主にこれで2Dだけで行きたいんですが、座標の原点が左下なので換算が少々面倒です。左上にできませんか?
もう一つ。画面に入る場所のタイルだけ毎フレームglDrawTexfOESするのが普通ですか?マップ済みのを簡単にスクロール・拡大したりできないかと思って
0023デフォルトの名無しさん2012/12/02(日) 01:06:04.14
>>18
OSX Mountain Lionで試してみたけど通らない
失敗する原因はglGetIntegervでのバージョン取得が上手くいってないからっぽい
なぜかはよくわからない
0024デフォルトの名無しさん2012/12/02(日) 01:43:05.64
>>22
射影変換の後にY軸を反転する変換をすれば良いんじゃね
テクスチャ座標もあわせて変換しとかないといかんな
0025デフォルトの名無しさん2012/12/03(月) 04:45:22.03
>>23
試してくれたのね。ありがとう。
なんでなんだろうね。何か動きがあるか、しばらく待った方がいいかな。
0026デフォルトの名無しさん2012/12/03(月) 23:22:18.24
初期化で失敗する原因はもっぱらコンテキストが出来上がる前になんにゃらかんやらしちゃってる
0027デフォルトの名無しさん2012/12/09(日) 08:07:01.16
glReadPixels()でステンシルバッファをうまく読み込めません…

↓ステンシルバッファの内容(左下がウインドウ座標原点)
90 … 99
:    :
10 … 19
0 … 9

上のステンシルバッファを読み込もうとしたコード↓

GLubyte sb[10][10];
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, 10, 10, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, sb);


結果は、

sb[0][0〜9] == 0
sb[1][0〜9] == 10
sb[2][0〜9] == 20
 :
sb[9][0〜9] == 90

となってステンシルバッファの最初の1列しか読み込んでくれません…

sb[y][x] == 10*y+x
となってほしいのですが何か設定が足りないのでしょうか?
0028272012/12/09(日) 08:24:34.33
ちなみにカラーバッファを読み込もうとしても同様のことが起こります。
0029デフォルトの名無しさん2012/12/09(日) 09:46:55.83
GL_PACK_ALIGNMENTで1を指定してるからじゃないかな?
GL_PACK_ROW_LENGTHで10でやってみたら?
よくわからんけど
0030272012/12/09(日) 10:14:37.68
>>29

//glPixelStorei(GL_PACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ROW_LENGTH, 10);

でやってみましたが、
配列sbの中での行頭データが4byte境界にズレただけで
相変わらず1行分(10pixel)のデータが全て行頭データになってしまいます。

また、
glReadPixels(1, 0, 10, 10, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, stencil_buffer);
        ~~~~
としてxをずらしてもなぜか同じ結果です。
0031デフォルトの名無しさん2012/12/09(日) 10:17:00.88
X GLubyte sb[10][10];
○ GLubyte sb[10*10];
0032272012/12/09(日) 10:38:59.30
>>31
それも試しましたが同じでした。
0033デフォルトの名無しさん2012/12/09(日) 10:46:39.65
>>31
先頭アドレスが同じなら入ってくるデータは同じだよね
あとでアクセスするときに意味が変わるだけで
0034デフォルトの名無しさん2012/12/09(日) 12:51:32.04
Open GL ES 1.0で、煙のような表現をやりたくて、
テクスチャを読み込ませ背景に重ね合わせたんですが、
なぜか微細な透過部分がグレー色になってしまいます
そういう仕様なんでしょうか?
0035デフォルトの名無しさん2012/12/09(日) 13:04:23.55
はい、その通りです
0036デフォルトの名無しさん2012/12/09(日) 13:13:27.96
いいえ、違います
0037342012/12/09(日) 14:14:27.58
あきらめずにググってたら解決方法見つかりました

>>35-36
どうもありがとうございました
0038デフォルトの名無しさん2012/12/09(日) 14:16:52.79
答えをy/nで聞き、自己解決しても原因・対策を書いていかない
まるで役に立たない書き込みだな
0039デフォルトの名無しさん2012/12/09(日) 14:29:06.05
まあ、どこかに一度アウトプットすることで整理されることもあるよね
0040デフォルトの名無しさん2012/12/09(日) 15:04:50.78
>>37は>>35,36に対するイヤミだろw
糞みたいに役に立たない回答ありがとうございました(死ね)
みたいな意味だと思うわw
0041デフォルトの名無しさん2012/12/10(月) 10:35:29.22
いやまぁ、>35、>36を見て自分で調べるしかないと覚悟したのかも知れん。
まぁでも、>37を書くなら原因くらい書いていって欲しかったがな。
0042デフォルトの名無しさん2012/12/10(月) 20:28:56.34
まあエスパーじゃないと>>34には答えられんわな
0043デフォルトの名無しさん2012/12/10(月) 22:15:27.89
どうせ0.375だろうけどな
0044デフォルトの名無しさん2012/12/12(水) 12:21:51.78
カラーバッファーのマスクについて教えてください
複数のカラーバッファーのマスクを個別に変更できる必要はありますか?
OpenGLの仕様上個別に制御可能ですが、こんな機能使わないと思うので
一括して変更にしか対応しない仕様にしようと思います
0045デフォルトの名無しさん2012/12/12(水) 18:25:12.07
使ったことはある
画面全体の赤成分だけとか緑成分だけとかを反転させたかったときに
カラーマスクをかけて glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO) で塗り潰した
0046デフォルトの名無しさん2012/12/12(水) 19:28:40.95
>>34
アルファブレンドしろよ
というか懐かしいな
20年前学生だったとき暇つぶしにやったよ
0047442012/12/12(水) 19:59:14.05
>>45
上の書き方だとそう取られてもしょうがない(反省)
複数バッファー(COLOR_ATTACHEMENT0,1,2,3...)をアタッチした時に、
その中の1つのバッファーだけカラーマスクを変えたい事がありますかという質問です。
そういう需要はないと踏44んでいます
0048442012/12/12(水) 20:05:24.71
あともう1つ
αブレンドってシェーダー&オフラインレンダリングの時代にはぶっちゃけもう必要ないですよね?
デフォルトのRGBのフレームバッファーに対する基本的な合成がせいぜい6種類ぐらいあれば十分で、
オフラインのRGBAバッファーに対する合成は必要無いですよね?
Aチャネルの扱いとか定義しろと言われても困る
0049デフォルトの名無しさん2012/12/12(水) 20:38:27.47
必要ないときたかペイントツールとか思慮の外なんだろうな超絶頭悪いんだなお前
テスト仕様書漏れまくりだろ存在が人災レベルのクズ
0050デフォルトの名無しさん2012/12/12(水) 21:24:02.10
アルファブレンドが必要ないとかありえませんわ
透明な物体を使わないってことだろ
ありえませんわ
0051デフォルトの名無しさん2012/12/12(水) 22:05:13.71
ヌルポブレンド
0052デフォルトの名無しさん2012/12/14(金) 02:59:25.85
>>48
はい、シェーダーの時代なのでぶっちゃけ全部不透明オブジェクトです
オフラインレンダリングの時代なのでぶっちゃけOpenGLも必要ないです
0053デフォルトの名無しさん2012/12/15(土) 01:04:45.11
alpha to coverageでお手軽半透明マジおすすめ
0054デフォルトの名無しさん2012/12/15(土) 02:07:18.15
Windows で動く簡単な3Dプログラムを作りたいんだけど、何で作るのがおすすめ?
できれば Java でやりたいんだけど。

具体的には、平面のフロアマップを、タッチパネルで回転したり、拡大したりするだけ。
0055デフォルトの名無しさん2012/12/15(土) 02:13:40.57
Processing どうぞ。
0056デフォルトの名無しさん2012/12/15(土) 02:25:21.73
>>55
初めて聞きましたわ。なんだか自由度が低そうですわ。
0057デフォルトの名無しさん2012/12/15(土) 02:28:07.51
フロアマップ出すだけとはいえ、画像管理したり、マップ切り替えたり、
UI作ったりしなきゃいけないので、そこそこ色々できるのがいいです。ごめんなさい。
0058デフォルトの名無しさん2012/12/15(土) 02:33:35.19
とりあえず使ってみてから文句言えや
0059デフォルトの名無しさん2012/12/15(土) 02:45:26.72
>>58
確かにそれは失礼した。明日使ってみる。

内部的にはJavaなのねこれ。
作った後誰かにメンテ託さないといけないので、
なるべくメジャーな言語がいいんだけど、ここまでJavaっぽいならありかもね。
0060デフォルトの名無しさん2012/12/15(土) 04:51:03.39
うにty
0061デフォルトの名無しさん2012/12/15(土) 12:50:23.18
UnityってWindowsでも動くんだ。いいかも。
0062デフォルトの名無しさん2012/12/15(土) 17:48:08.82
当方、CGプログラミングを始めたばかりの初心者です。
以下の描画関数displayを用意して、glRotatedでY軸中心にに30度回転させると
四角形がいくらか縦長になるという動作を期待したのですが、
30度回転すると、何故か90度回転している?ようでXY平面には何もプロットされません。
60度回転すると、左と右の色が反転、すなわち180度回転?しているようなのですが
これはどういう解釈をすればいいのでしょうか?

void display(void){
glClear(GL_COLOR_BUFFER_BIT);
glRotated(30.0(任意の角度),0.0,1.0,0.0);
glColor3d(1.0,0.0,0.0);
glBegin(GL_POLYGON);
glColor3d(1.0,0.0,0.0); glVertex2d(-0.9,-0.9);
glColor3d(0.0,1.0,0.0); glVertex2d(0.9,-0.9);
glColor3d(0.0,0.0,1.0); glVertex2d(0.9,0.9);
glColor3d(1.0,1.0,0.0); glVertex2d(-0.9,0.9);
glEnd();
glFlush();

}
0063デフォルトの名無しさん2012/12/15(土) 17:53:42.21
radian
0064デフォルトの名無しさん2012/12/15(土) 17:56:39.70
>>62
このコードだとdisplay()が呼ばれるたびにY軸中心の回転変換が加えられてしまう
glLoadIdentity()とかを使って行列を毎回初期化してください
話はそれからだ
0065622012/12/15(土) 18:06:23.80
>>64
なるほど。
glLoadIdentity()を追加したところ、正常とおもわれる動作で90度回転でXY平面からは見えず
180度回転で反転となりました。
ウィンドウが開くまでに、内部的にdisplay()が三回呼び出されていて回転変換が重なってしまったた。
ということでしょうか。
ご示唆ありがとうございました
0066デフォルトの名無しさん2012/12/16(日) 00:56:02.05
AndroidのアプリをOpenGLで作っていて初心者なんですがテクスチャを表示するとき
その表示しようとした部分だけ白くなる原因ってサイズを2の累乗にしなきゃいけないってこと
以外にどんなものがあります?

あとアルファ値を有効にして表示するのは
glEnable(GL10.GL_ALPHA_TEST);
を使えばokですか?
0067デフォルトの名無しさん2012/12/16(日) 01:35:19.58
サンプラパラメータのGL_TEXTURE_MIN_FILTERの初期値がGL_NEAREST_MIPMAP_LINEARなので
ミップマップなしのテクスチャだとおかしなことになりそうだな
0068デフォルトの名無しさん2012/12/16(日) 03:03:29.26
テクスチャをDISABLEしてるとなる
0069デフォルトの名無しさん2012/12/16(日) 03:19:07.39
>>66
なんのアルファ値を有効にしたいのか分からないけど、
テクスチャのアルファブレンドとALPHA_TESTは違う
0070デフォルトの名無しさん2012/12/16(日) 05:04:54.61
Javaには無理
0071デフォルトの名無しさん2012/12/16(日) 20:38:32.79
C → C++ → JAVA → C++

これが正しい進み方
0072デフォルトの名無しさん2012/12/16(日) 21:03:08.66
Javaなんて糞言語三角コーナーに投げ捨てろ
代わりにC#を使ったほうが便利だ
0073デフォルトの名無しさん2012/12/16(日) 21:31:45.98
ぷぷっ
0074デフォルトの名無しさん2012/12/16(日) 21:39:33.17
C#って何ができるの?
0075デフォルトの名無しさん2012/12/16(日) 23:38:18.21
何故C++じゃなくてC#なのか全く意味不明。
0076デフォルトの名無しさん2012/12/17(月) 00:04:55.91
C++
 ++
0077デフォルトの名無しさん2012/12/17(月) 00:31:18.84
JavaじゃなくてC#って書いてあるのがいつの間にかC++じゃなくてC#ということになってるのが意味不明です
0078デフォルトの名無しさん2012/12/17(月) 01:20:02.09
C++から一度はJAVAに移るが例外処理のウザさと実行速度の遅さに
ウンザリして結局C++に戻るんですね、わかります。
0079デフォルトの名無しさん2012/12/17(月) 01:43:42.22
C丼
0080デフォルトの名無しさん2012/12/17(月) 08:51:08.21
OpenGLを使う上でC#の優位性が全く存在しないのに、
役立たずを勧める意図は何なんだろう?
0081デフォルトの名無しさん2012/12/17(月) 19:40:57.36
OpenGL以外の部分で優位だからじゃないの?
0082デフォルトの名無しさん2012/12/17(月) 19:58:49.62
その通り
C++だとGUI作るのが面倒すぎる
0083デフォルトの名無しさん2012/12/17(月) 20:08:19.83
qtgl
0084デフォルトの名無しさん2012/12/17(月) 20:53:23.10
GUIといえばJAVAとC#だけどC++でもGUIライブラリ使えば
それなりに楽できるんじゃないかな?
0085デフォルトの名無しさん2012/12/17(月) 20:59:17.21
なんで今更C++なんて覚えなきゃいけないんですか?時代遅れですよね?
0086デフォルトの名無しさん2012/12/17(月) 21:23:27.86
C#の場合C++でライブラリ書いて呼び出すのも比較的簡単だし
え?SWIG?
0087デフォルトの名無しさん2012/12/17(月) 21:25:45.98
Fortran2003にしましょう
0088デフォルトの名無しさん2012/12/17(月) 21:27:32.39
今更と思うのなら、自分の使っているアプリを見回してみるいい。
OS、アプリ、ゲームと、ことごとくC/C++で出来ている。
C#で出来ている物といえば、手抜きっぽい小規模なプログラムばかりだ。
0089デフォルトの名無しさん2012/12/17(月) 21:31:56.57
手抜きで間に合うのなら手抜きでいいんだよ
0090デフォルトの名無しさん2012/12/17(月) 21:36:14.46
VC#が神すぎてQtとかうんこに見えてくる
0091デフォルトの名無しさん2012/12/17(月) 21:37:45.09
お前らOpenGLの話しろよ(´・ω・`)
0092デフォルトの名無しさん2012/12/17(月) 21:38:12.23
GUIなんて自作しろよ
.NETFRAMEWORKはモッサリで駄目だ
0093デフォルトの名無しさん2012/12/17(月) 21:43:39.99
C#でGUIって、OpenGLで描画したものと整合性がとれないだろう。
だからみっともないユーティリティ擬きしか作れないんだよ。
0094デフォルトの名無しさん2012/12/17(月) 21:49:03.39
C#使ったことないならでたらめなこと言わないほうが良いよ
恥かくのが趣味なら止めないが
ttp://sky.geocities.jp/freakish_osprey/opengl/images/Demo_MQOViewer.png
0095デフォルトの名無しさん2012/12/17(月) 21:50:32.27
まずリンク先がデタラメだよね。
0096デフォルトの名無しさん2012/12/17(月) 21:52:41.88
結局、OpenGLでまともにGUIをやろうと思ったら、
標準で提供されているRADツールなど何の役にも立たない。
0097デフォルトの名無しさん2012/12/17(月) 21:56:38.38
>>85
なんで今更歩くことなんて覚えなきゃいけないんですか?時代遅れですよね?
っていって足を切り落とされるお前の赤ちゃんがかわいそう
0098デフォルトの名無しさん2012/12/17(月) 21:57:31.39
他のGUIライブラリも何の役にも立たないけどね
自作しなければならない部分はあるが、そうでない部分をRADでとても楽させてもらえるのが良いね
0099デフォルトの名無しさん2012/12/17(月) 21:58:43.57
通常のGUIコンポーネントの一部にOpenGLで描画したいって需要もあるんだよ
0100デフォルトの名無しさん2012/12/17(月) 22:00:40.13
むしろそれがほとんどじゃないか?
0101デフォルトの名無しさん2012/12/17(月) 22:02:02.23
売り物にならないようなユーティリティだとそんな感じだね。
0102デフォルトの名無しさん2012/12/17(月) 22:04:17.02
C#をまともに活用しようとすると、C++でごりごりライブラリを書いていかないといけないのが悲しいところ。
Javaも同様。
0103デフォルトの名無しさん2012/12/17(月) 22:04:34.86
売り物にならないというのは例えばこういう感じですかな?
ttp://www.quatouch.com/products/hisui/

Qtなんかはこれより低機能なのでとても売り物になりませんね
0104デフォルトの名無しさん2012/12/17(月) 22:07:16.45
売り物にならないユーティリティって煽るけど、ユーザーが金払わなくても企業が払ってくれればそれでいい
0105デフォルトの名無しさん2012/12/17(月) 22:08:18.77
C#のRADもQtも同様に使い物にならないよ。
まともな物を作ろうと思ったら他力本願じゃ無理なんだよ。
0106デフォルトの名無しさん2012/12/17(月) 22:08:29.66
とりあえず第三者に売り物にならないとか言われてもなあ
0107デフォルトの名無しさん2012/12/17(月) 22:08:58.41
使い物になるよ
自力でやる以外の部分がとても楽になるよ
0108デフォルトの名無しさん2012/12/17(月) 22:11:37.32
目的とする物が小規模で見た目を気にせず楽が出来れば良い -> C#
そういう選択肢は否定するものではない。
0109デフォルトの名無しさん2012/12/17(月) 22:15:03.17
短時間でボタンを並べて計算機を作れというお題に、C++とC#のどっちを使うかと聞かれたらどうする。
C#を選ぶだろう。
つまり、そういうことだ。
0110デフォルトの名無しさん2012/12/17(月) 22:21:44.15
Delphiとか言ってみる。
0111デフォルトの名無しさん2012/12/17(月) 22:26:55.95
Delphiの開発者がMSに引き抜かれて作ったのがVC#
0112デフォルトの名無しさん2012/12/17(月) 22:43:58.94
Lily C++ GUI Library
0113デフォルトの名無しさん2012/12/17(月) 23:00:07.88
短時間でボタンを並べて計算機を作れというお題に、C++とC#のどっちを使うかと聞かれたらどうする。
C++を選ぶだろう。
0114デフォルトの名無しさん2012/12/17(月) 23:08:06.87
その場合、OSを作れというお題にするべきだろう。
0115デフォルトの名無しさん2012/12/17(月) 23:10:15.11
自分が言語やライブラリ選べる立場なら好きなの使えばいいんじゃない
0116デフォルトの名無しさん2012/12/18(火) 00:18:56.70
>114
お前OSを日常的に作ってるのか?
比べるなら日常的に作ってるものが如何に効率的に作れるかだろが
0117デフォルトの名無しさん2012/12/18(火) 00:36:25.65
>>116
ドライバー作ってますが何か?
0118片山博文MZボット ◆0lBZNi.Q7evd 2012/12/18(火) 00:42:44.14
>>116 ReactOSというOSの開発に日常的に携わっています。
0119デフォルトの名無しさん2012/12/18(火) 01:02:32.34
そんな売り物にならない産廃作ってどうするの
0120デフォルトの名無しさん2012/12/18(火) 03:35:28.54
>>119 売り物にならないものでも、高額寄付の対象になったりしてあれこれお金の流れが変わるんですよ。
NPO「ReactOSで無料日本語OSを作る会」なんて設立したいと考えています。
0121デフォルトの名無しさん2012/12/18(火) 08:30:25.31
計算機を作っても当然のごとく売り物にはならないけどね。
0122デフォルトの名無しさん2012/12/18(火) 09:10:10.35
>>99
それ、OpenGLじゃなくてよくね?
0123デフォルトの名無しさん2012/12/18(火) 10:06:21.76
お前OpenGL使ったことないだろ
0124デフォルトの名無しさん2012/12/18(火) 10:09:43.54
OpenGLでプログラムを組もうとすると、計算系のライブラリの整備が必要。
SSE2やNEONのインラインアセンブラや組み込み関数が使えない言語は問題外だ。
0125デフォルトの名無しさん2012/12/18(火) 13:55:05.92
最適化が必要なとこだけネイティブに逃がしてあとは楽しよう、でええやん
0126デフォルトの名無しさん2012/12/18(火) 15:32:12.27
OpenCLとかじゃあかんの?
0127デフォルトの名無しさん2012/12/18(火) 15:59:45.41
演算のたびにネイティブと行き来していたら、
拡張命令を利用するメリットが消失する。
必要な部分を逃がしたらスタートアップ部分しか残らないぞ。
0128デフォルトの名無しさん2012/12/18(火) 16:09:37.88
プログラム中すべての演算をSIMDにしなきゃ発狂する病気でも患ってるのけ?
0129デフォルトの名無しさん2012/12/18(火) 19:27:06.15
最適化の必要頻度の低い単純な演算でも、
C/C++なら拡張命令を使ったコードをコンパイラが勝手に生成してくれる。
便利な世の中になったものだ。
0130デフォルトの名無しさん2012/12/18(火) 20:44:30.19
OpenGL を動かすデバイス(CPU統合型のGPUや、外部カードのGPUなど)を
プログラムから設定する方法はあるでしょうか。
0131デフォルトの名無しさん2012/12/18(火) 20:54:37.66
そもそも初期化時にどこに関連づけるか設定しているはずだが?
0132デフォルトの名無しさん2012/12/18(火) 20:56:10.69
OpenGL 4.3 キター
01331302012/12/18(火) 21:19:46.50
>>131
え?

適当にピクセルフォーマットを設定し、
レンダリングコンテキストを作成して適用すれば、
それで OpenGL の関数が使えてレンダリングできてしまうのですが・・・
0134デフォルトの名無しさん2012/12/18(火) 21:34:22.93
コンテキストがデバイスと紐付けされているだろう。
何のために関連づけていると思っているんだ?
今まで意味も分からずにやってたのか?
01351302012/12/18(火) 22:44:58.13
>>134
ごめんなさい、意味がよく分からないです。

wglCreateContext 関数と wglMakeCurrent 関数によって、
HGLRC と HDC が紐付けされるという意味でしょうか?
0136デフォルトの名無しさん2012/12/18(火) 23:05:25.17
HDCのDC部分の正式名称を声を出して読み上げろ。
0137デフォルトの名無しさん2012/12/18(火) 23:25:13.77
複数GPUがある場合の指定方法を聞いていると思うが……

WGL_NV_gpu_affinity とか使ったことないから知らん。
0138デフォルトの名無しさん2012/12/18(火) 23:41:52.16
だから最初にデバイスを指定して初期化しているだろう。
なんでそんなに頭が悪いの?
0139デフォルトの名無しさん2012/12/18(火) 23:44:53.58
この辺りの話しかな?
ttp://watery.dip.jp/slash/archives/1062
0140デフォルトの名無しさん2012/12/19(水) 00:22:15.46
コピペ野郎は腐れゴミ
意味を理解して使わないってどんな気分なんだろうか
0141デフォルトの名無しさん2012/12/19(水) 03:58:35.99
うごきゃいいんだよ
01421302012/12/19(水) 07:10:48.61
>>138
CreateWindow 関数でウィンドウを作ってから
wglMakeCurrent 関数でレンダリングコンテキストと
そのウィンドウのデバイスコンテキストとを紐づけるまで、
レンダリングをするデバイスを選んでいる箇所は見当たりません。

例えば私のPCにはグラフィックス表示用デバイスとして
01431302012/12/19(水) 07:13:34.64
途中でレスしてしまいました。
続きです。

例えば私のPCにはグラフィックス表示用デバイスとして
Intel HD Graphics 4000、NVIDIA Quadro K2000M の2つがあります。

OpenGL をどちらのデバイスを使用してレンダリングするのか、
初期化時に選択するような記述は特にしていないのですが、
いつの間にか選択していたと言うことでしょうか。

もしそうなら、今どちらのデバイスでレンダリングしているのか、
という事が分かる関数はあるのでしょうか。
0144デフォルトの名無しさん2012/12/19(水) 08:02:32.00
>>143
少なくとも標準APIでの指定は出来ないと思います

どちらのデバイスを使っているかは glGetString()すれば
判ります
01451302012/12/19(水) 12:34:22.41
>>144
ありがとうございました。
0146デフォルトの名無しさん2012/12/19(水) 12:39:44.35
生成するウインドウの位置で取得できるDCのデバイスが決定するから、指定は可能なんだが、
指定はできないとか嘘をつくのはやめろ。
01471302012/12/19(水) 12:54:15.10
>>146
指定する方法を教えていただけませんか。

あるいは、指定する方法の調べ方のヒントでも構いません。
「HDC GPU」や「HDC ビデオカード」などのキーワードでググってみても
なかなか分かりません。
0148デフォルトの名無しさん2012/12/19(水) 12:57:06.74
異なる種類のGPUを(同一のモニタ上に)描画用として使用するのは
難しい(おそらく不可能)ために、使用時点で有効になっているGPUの
デバイスコンテキストが作成されると考えて差し支えないはず。

つまり「どのGPUへのコンテキストを作るか選びたい」という要求自体
不可能ということになる。
0149デフォルトの名無しさん2012/12/19(水) 13:02:28.02
馬鹿には無理
0150デフォルトの名無しさん2012/12/19(水) 13:27:05.24
>>147
HDCを取得した時点のデバイスが対象になるから、
そうなるようにウインドウの位置を調整すれば良いだけの話。
0151デフォルトの名無しさん2012/12/19(水) 13:30:35.82
また複数デバイスを同時に連携させたいのなら、
プロセスをその数だけ作ってオフラインレンダリングした後に、
データをソケットなりで引き渡せば良い。
01521302012/12/19(水) 19:30:07.50
>>150
ごめんなさい、まだ意味が分かりません。

複数のディスプレイアダプターがインストールされている場合、
DirectX はどれを使うか選択できたような記憶があるのです。
その時に、ウィンドウの位置などは特に気にせずとも設定できたような気がするのですが、
OpenGL で同じような事はできないということでしょうか。
0153デフォルトの名無しさん2012/12/19(水) 19:45:15.06
馬鹿には無理
0154デフォルトの名無しさん2012/12/19(水) 19:51:01.84
複数のGPUにそれぞれ別々のモニタが割り当てられている場合なら、>>150 でいいと思う。
モニタが一枚なら、知らん。
01551302012/12/19(水) 19:58:22.55
>>154
モニターは1枚なので諦めます。

みなさんありがとうございました。
0156デフォルトの名無しさん2012/12/19(水) 21:27:38.03
デバイスを直接指定してHDCを作ろうとかいう発想には至らないんだね。
まあ想像通りの結果だったけど。
0157デフォルトの名無しさん2012/12/19(水) 21:55:44.57
xp以降なら CreateDC を使えって事でしょ
0158デフォルトの名無しさん2012/12/19(水) 22:53:33.26
WindowsプログラマでHDCが何者かわからないってどうよ
0159デフォルトの名無しさん2012/12/19(水) 23:41:11.63
glFrustumを使っていて途中で一時的にもっと手前までレンダリングしたい。
nearを小さく小さく

でも最初のglFrustumに渡した値はわからず、glGet projection matrixでその時の行列を取得したんだけど、この16個の値のどれをイジればもっと手前までレンダリングできるのでしょうか?

宜しくお願いします。
0160デフォルトの名無しさん2012/12/19(水) 23:46:44.38
glFrustumで適用される行列の導出方法が載ってるので逆算して求めてください
ttp://www.opengl.org/sdk/docs/man2/xhtml/glFrustum.xml
0161デフォルトの名無しさん2012/12/20(木) 00:04:50.66
数学できない子が3Dやる意味がわかりません><
0162デフォルトの名無しさん2012/12/20(木) 00:10:45.33
数学つっても高校数学ですね、3Dは。
0163デフォルトの名無しさん2012/12/20(木) 00:15:29.41
最近はエピポーラ幾何を高校で習うのか
0164デフォルトの名無しさん2012/12/20(木) 00:17:47.42
>>160
ありがとう!
0165デフォルトの名無しさん2012/12/20(木) 00:21:28.98
高校で行列教えなくなったって聞いたが
0166デフォルトの名無しさん2012/12/20(木) 00:54:20.67
結局は3次か4次の線形代数でしょう
線形数学は大したことないぽ
01671662012/12/20(木) 00:56:02.43
有限次元の線形代数は、という意味ね
0168デフォルトの名無しさん2012/12/20(木) 06:01:50.67
通りすがりの元ゲーム屋なウェブ屋だけど、結局最後に勝つのはお前らC++erだと思うよ。
ネイティブ最強、ウェブもEmscriptenとWebGLがモノになれば最強でしょ。
JavaScriptやその派生言語で本格的な3Dコード書くとか想像できないし
(そもそもこっちの連中、なんでJavaScriptじゃ駄目なのか根本的に分かってない)

だからその調子で正道を歩んでほすぃ

俺は出戻りを考えたりもするけどブランクがありすぎる
0169デフォルトの名無しさん2012/12/20(木) 07:51:19.32
数学じゃなくて算術
0170デフォルトの名無しさん2012/12/20(木) 21:58:31.12
ボトルネックは大体GPUなんだし
JITでネイティブ言語の10%落ちくらいまで行ければいいんだけどなあ
0171デフォルトの名無しさん2012/12/21(金) 00:40:26.02
和算に3Dってあったっけ?
0172デフォルトの名無しさん2012/12/21(金) 09:01:05.69
甲乙丙座標系を知らないな
0173デフォルトの名無しさん2012/12/21(金) 22:15:53.32
蝕の日時を予言するためにはもっと高度な算法が必要じゃないか?
0174 忍法帖【Lv=2,xxxP】(2+0:5) 2012/12/26(水) 12:14:45.67
必読書を買おうとして気になったことが、

>>2のディジタル映像表現ですが、ディジタル画像処理の間違いではないですか?
www.amazon.co.jp/dp/4903474011/

ディジタル画像表現だと内容に違和感があります。出版社も違いますし・・・
www.amazon.co.jp/dp/4903474100/
0175デフォルトの名無しさん2012/12/27(木) 11:53:23.85
出版社は同じだろ。どちらも903474だ。
0176デフォルトの名無しさん2012/12/28(金) 17:05:27.80
OpenGL ES 1.0でテクスチャになんか描画して、ES 2.0でそのテクスチャを板ポリに貼り付けて描画って可能ですか?
0177デフォルトの名無しさん2012/12/28(金) 17:34:09.28
試してみました?
0178デフォルトの名無しさん2012/12/28(金) 17:38:43.53
何事も経験が大事
0179デフォルトの名無しさん2012/12/31(月) 14:23:29.65
Windows、Macで、ローエンドPC、ノートPCでも動く
(3,4年前のノートPCで動くレベル)
開発をしろと言われたけど
OpenGL のバージョンどれくらいが良い?
(とりま Android,iOSで動く ES2.0のC++のエンジンは作った事ある )

あと お勧めの追加ライブラリある?
Win&Mac なのでC++確定だとおもうけど・・
0180デフォルトの名無しさん2012/12/31(月) 15:38:58.04
>>179
OpenGL 2.0(1.4 まで下げなくてもいいと思う)

お勧めの追加ライブラリあるかと訊かれても何を開発するのか分からん
0181デフォルトの名無しさん2012/12/31(月) 16:25:25.13
>>180
サンクス。前にスマホ用のレンダラー作ってその時ライブラリ探すのだるくて
バカみたいにMatrixやクオータニオン計算まで Cとアセンブラで自作して
今回楽したかったので。

今回作るのは レンダラー。 一般的な3D処理 スキンメッシュ〜補完、IK
もしかしたら物理演算 セルフシャドウ
ぐらいの 2.0で十分出来る内容で
Boostとか無駄に使いまくってるからそれと親和性あるライブラリあったら
楽したい
0182デフォルトの名無しさん2012/12/31(月) 17:36:14.05
>>181
> 今回作るのは レンダラー。 一般的な3D処理 スキンメッシュ〜補完、IK
> もしかしたら物理演算 セルフシャドウ

それセルフシャドウ以外はOpenGLもそのバージョンも関係ない。
スキンメッシュやIKなんかGDIでワイヤーフレーム描画しても実現できる。

セルフシャドウはフラグメントシェーダー使うとやりやすいけど、
OpenGL 2.0 でいい(1.5 でもいいかも知れん)。

> Boostとか無駄に使いまくってるからそれと親和性あるライブラリあったら
> 楽したい

レンダラーを自作するための「どのようなライブラリ」が欲しいのか明記してくれ。
0183デフォルトの名無しさん2012/12/31(月) 17:39:14.37
>>180
2.0だとDLLを別途配布しないといけなくない?
なんでWindowsはOSバージョンアップ時に更新していかないんだろ。
政治的な問題があるのかな?
0184デフォルトの名無しさん2012/12/31(月) 18:36:50.87
DLLは必要無い
0185デフォルトの名無しさん2012/12/31(月) 18:52:14.07
>>183
政治的な問題って例えば何?
0186デフォルトの名無しさん2013/01/01(火) 01:56:45.06
Windowsじゃなくても1.2以降の機能は関数アドレス自分で取りにいかないといけないんじゃないか?
ライブラリならとりあえずGLEWとGLMだけで十分だろ
0187デフォルトの名無しさん2013/01/04(金) 13:54:37.18
>>186
GLMなんて数学ライブラリがあったのね。知らなかった。
しかもMITライセンスか。いいねー。
0188デフォルトの名無しさん2013/01/04(金) 14:24:37.99
Clang の Vector Literal を使うと、Cでも

typedef float float3 __attribute__((ext_vector_type(3)));
float3 cross_3x3(float3 a, float3 b) {
return a.yzx * b.zxy - a.zxy * b.yzx;
}
こう書けて良い感じ
0189デフォルトの名無しさん2013/01/04(金) 14:46:29.40
外積関数そのものが既にライブラリにあって自作しないから、
その例だとあまり御利益ない感じ。
0190デフォルトの名無しさん2013/01/04(金) 15:23:00.26
書き方の話であって、関数自体はどうでも良いんだが……
0191デフォルトの名無しさん2013/01/04(金) 15:48:19.88
要素の参照順を変えられる事を「良い感じ」と言ってるけど、
良い感じっぷりを他の例でも挙げてくれるとありがたい。

というのも、外積による例だと既に作られているという事情もあって、
今ひとつどの辺りが良い感じなのか俺には分かりにくかった。

今まで自分が作ってきた3Dプログラム(主にゲーム)を振り返ってみて、
要素の参照順を変えられると助かったシーンを思い返してみてるんだけど、
なかなか思い浮かばないんだ。
01921912013/01/04(金) 15:50:56.51
補足しておくと、「これから新たに3Dアプリをプログラムするに当たって」
その良い感じっぷりが感じられるような例が何かないかなぁという意味。
0193デフォルトの名無しさん2013/01/04(金) 15:56:49.72
Swizzle演算子知らないの? 使ったこと無いの?
01941912013/01/04(金) 16:03:12.45
>>193
知ってるし、シェーダープログラムでは使ったこともあるが、
C言語内では使う機会が今のところなかった。
0195デフォルトの名無しさん2013/01/04(金) 16:05:57.45
行列やベクトルの操作を、ライブラリの関数呼び出すよりよっぽど簡易に書けるんだが。
ま細かい操作をしないのなら無用でしょうさ。
01961912013/01/04(金) 16:09:21.70
ごめん、なんか気分を害させたみたい。

どうしても今知る必要があるという質問ではないので、
変にこじれる前にこれで退散する。
0197デフォルトの名無しさん2013/01/04(金) 20:32:09.44
例の粘着荒らしはOpenGL使えないはずだからとりあえずご安心を。
0198デフォルトの名無しさん2013/01/09(水) 16:18:37.78
申し訳ありません、質問よろしいでしょうか?

Openglでobjファイルの点群データを扱っているのですが、点群にglCcolorで色を付けた際、ある方向から見ないとまともに色がついて表示されませんでした。
それ以外の方向から見ると多少濃淡が着いただけの水色で表示されてしまいます。どなたかこの現象の心当たりなどございませんか?
0199デフォルトの名無しさん2013/01/09(水) 16:31:36.19
追記です
色が見えるようになるのは、右上に表示されている座標軸のマークが黒くなっている時でした
恐らく光源との関係があると思います
0200デフォルトの名無しさん2013/01/09(水) 17:06:57.92
申し訳ありませんが、どんなコードを書いているのか判らないので
何が起きているのか想像ができません。
一昨日来やがってくださいませ。
0201デフォルトの名無しさん2013/01/09(水) 17:18:51.65
ポリゴン描く時以外はライティングオフにしないとダメ でいいのかな
0202デフォルトの名無しさん2013/01/09(水) 17:19:06.02
光源と関係があるとアタリが付いてるのなら、試しに光源処理を切ってみればいいと思うの
0203デフォルトの名無しさん2013/01/09(水) 18:43:56.84
金曜日から来ました
0204デフォルトの名無しさん2013/01/15(火) 00:44:45.32
Matrixの管理ってどうしてる?
Object毎にglLoadMatrixfするのはやらない?
0205デフォルトの名無しさん2013/01/16(水) 00:50:53.22
それ非推奨機能だからもうみんな使ってないんじゃないかな
0206デフォルトの名無しさん2013/01/16(水) 00:58:27.87
行列使わなくなったってこと?
0207デフォルトの名無しさん2013/01/17(木) 16:39:06.01
行列は自分で管理して適当にシェーダに渡せってこと
0208デフォルトの名無しさん2013/01/17(木) 19:56:39.32
モダニストめ
0209デフォルトの名無しさん2013/01/18(金) 09:41:58.44
日揮もとうとうヤキが回ったな。
by重役に恨みがある
0210デフォルトの名無しさん2013/01/18(金) 16:10:17.51
質問です。
glColor4f(r,g,b,a)のr,g,bの値を1.0未満に設定して描画することで画像の色合いを暗くすることはできるのですが、
逆に画像を白っぽくしたい場合はどうすればよいのでしょうか?
0211デフォルトの名無しさん2013/01/18(金) 16:22:02.77
1.0に近づければいい
0212デフォルトの名無しさん2013/01/18(金) 16:35:46.71
>>211
1.0に近づけてもそれ以上にしても、画像の元の色以上には白くなりません。
マイナスも試しましたが、0.0fと同じく黒くなるだけでした。
以下、現状のソースの抜粋です。
glColor4f(r, g, b, a);// rgbが1.0未満だと暗く描画される
glPushMatrix();
glLoadIdentity();
glBindTexture(GL_TEXTURE_2d, tex);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glVertexPointer(2, GL_FLOAT, 0, ver);
glTexcoordPointer(2, GL_FLOAT, 0, coord);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glPopMatrix();
glColor4f(1.0f, 1.0f, 1.0f, 1.0f); // 元の色合いに戻す
0213デフォルトの名無しさん2013/01/18(金) 16:58:28.27
便利な言葉
馬鹿には無理
0214デフォルトの名無しさん2013/01/18(金) 17:09:49.69
>>212
GL_MODULATEをGL_BLENDに変更するとか?
0215デフォルトの名無しさん2013/01/18(金) 17:21:07.56
シェーダ使って好きなだけ色を加算すればいいだろう。
0216デフォルトの名無しさん2013/01/18(金) 17:29:45.47
>>214,215
ありがとうございます。
うまくいきそうです。
0217デフォルトの名無しさん2013/01/18(金) 21:00:55.26
超初歩的な質問ですみません。
現在、webを参考にしながら、まずはOpenGLES1で2D画像を表示させようとしています。
環境はxcode4.5、iPhone用アプリです。
それで、どうにかテクスチャにPNG画像を読み込んで表示させる事に成功したのですが、
読み込む画像が510pixを超えると、全く表示出来なくなってしまいます。

テクスチャの最大サイズが1024pixまでというのが原因かなとは思っているのですが、
ES1の場合、Retinaの画面サイズにスッポリ入るようなサイズを読み込む事はできないのでしょうか?
ちなみに、eaglLayer.contentsScale = [UIScreen mainScreen].scale;でRetina対応にしています。
0218デフォルトの名無しさん2013/01/18(金) 22:24:09.35
256の整数倍に
0219デフォルトの名無しさん2013/01/19(土) 19:24:53.23
DXUT にはスライドバーなどのコントールがありますが、
同じようなコントローラーを提供する OpenGL 用の GUI ライブラリはありますか。

OpenGL のレンダリング先ウィンドウとは別のウィンドウにコントローラーを表示したり、
同じウィンドウ内でも別のHWND領域に表示したりということではなく、
DXUT のようにレンダリング式にオーバーラップして表示するタイプのものです。

以前ネット巡回中に偶然 OpenGL 用のそのようなライブラリを見たような気がしたのですが、
その時は全く興味なかったため、URL も、回った時の検索ワードも記憶していません。

どなたかご存じないでしょうか。
0220デフォルトの名無しさん2013/01/19(土) 19:44:40.05
anttweakbarとか?スライダーないけど
0221デフォルトの名無しさん2013/01/19(土) 20:14:54.90
質問させて下さい。
ゲームでよくあるフェードイン・フェードアウトを実現しようとして、
テクスチャにJPG画像をまず描画し、0.1秒ごとにアルファ値を増やしたColorで
画像の上を画面いっぱいに塗りつぶしをしているのですが、RGBAの色情報が(0,0,0,a)のように
まっ黒の場合は、画像くっきり→じわじわ黒へ、と綺麗に実現出来ました。
同様に青や赤なども大丈夫だったのですが、(255,255,255,a)のように白の場合は
まったく半透明にならず、ずっと真っ白で塗りつぶされたままの状態です。
というか、(255,255,0,a)とか(200,180,225,a)のように、RGBを混ぜた色にしたりすると
綺麗に半透明にならない感じなのですが、色情報について、またアルファ値について
何か大きな認識間違いをしているのでしょうか?
0222デフォルトの名無しさん2013/01/19(土) 20:40:16.46
はい
0223デフォルトの名無しさん2013/01/19(土) 20:48:12.03
単純にチャンネルの対応が間違ってるじゃねえの
1チャンネルずつ0にして対応確認しろよ
02242192013/01/19(土) 21:13:51.38
>>220
ありがとうございます。

スライドバーそのものでなくても、
マウスのドラッグで値を変更できる仕組みがあれば構いません。
見たところ AntTweakBar がそれっぽいですね。

もう少し詳細に調べてみます。
0225デフォルトの名無しさん2013/01/20(日) 01:25:35.48
openGL用のビューの上に透明のUIビューを重ねて、openGLの機能と一緒に
UILavelなどを使いたいのですが、xib上でopenGLのViewの上に
配置して実行するとエラーになってしまいます。
こういった場合、普通にビューを重ねてもダメなのでしょうか?
0226デフォルトの名無しさん2013/01/20(日) 03:01:26.39
はい
0227デフォルトの名無しさん2013/01/20(日) 10:49:03.70
⊃subview
0228デフォルトの名無しさん2013/01/20(日) 13:42:53.07
>>225
iPhone開発のスレ逝け
0229デフォルトの名無しさん2013/01/22(火) 20:03:29.55
http://www.youtube.com/watch?v=zr7k7kaokSk#t=14m25s
このtutorialやってたんですが、GL_FALSEがエラーになるのですが何故でしょうか?
eclipseのヘルプにはGL_FALSE cannot be resolved to a variableとでてしまいます。
tutorialの指示通り、GL20をimport staticしています。
0230デフォルトの名無しさん2013/01/22(火) 20:32:16.44
自己解決しました。
GL11も必要なんですね・・。
0231デフォルトの名無しさん2013/01/22(火) 21:29:27.44
http://www.wgld.org/
0232デフォルトの名無しさん2013/01/27(日) 23:18:55.32
基本的な事かもしれないですが質問です。
COLLADAをパースしたところ、trianglesのインデックスリストに
頂点座標(0,1,2)、法線(0,0,0)みたいになってました。
ようするに、法線は全頂点で同じなのでそうなっていると思いますが、
OpenGLでこれをそのまま描画する方法は無いでしょうか?

最終的にはglDrawElementsで描画するには法線データを3つコピーして
(0,1,2)で描画できるようにしましたが。
0233デフォルトの名無しさん2013/01/28(月) 02:41:55.31
法線だけin/out変数にflat付けとけば良いんじゃないか
0234デフォルトの名無しさん2013/01/28(月) 22:40:15.04
まぁフラットとは限らない。座標(0,1,2)、法線(0,0,1)とかもありえる。
多分無理だろうと思えてきた。
0235デフォルトの名無しさん2013/01/29(火) 18:30:06.78
デスクトップ(Win、Mac)と スマホ(iPhone Android)
に対応した OpenGLアプリ作りたいんだが(C++)
OpenGLのバージョン、ライブラリ、UIライブラリ等のオススメある?
今 OpenGL2.0とES2.0を コンパイルオプションで分けて
GLUT+Qtフレームワークを想定している
作るものは、モデルビュワー&アニメーション作成かな。
最終的には物理演算つけて楽しみたい。
0236デフォルトの名無しさん2013/01/29(火) 18:33:55.11
了解。
0237デフォルトの名無しさん2013/01/29(火) 20:36:10.78
WindowsPhoneはだれかGLESのラッパーつくってくれねえかな。
0238デフォルトの名無しさん2013/01/29(火) 20:48:20.69
なんでこう日本人はどいつもこいつも他力本願なんだよもう・・・
0239デフォルトの名無しさん2013/01/30(水) 04:50:54.63
世の中銭や
0240デフォルトの名無しさん2013/01/30(水) 10:41:44.17
>>235
取り敢えず手元ではQtOpenGLアプリがWin/Mac/Linuxで動いている。
私もタブレットを睨んでいるので、経過を報告してくれると嬉しい。
0241デフォルトの名無しさん2013/01/30(水) 12:50:37.93
>>240
今はまだ VisualStudioで作っててWindowsオンリー。
Qtがeclipseで動かなくて・・eclipseで動けばマルチプラットフォームテストするのに
QtでGL2.0使うには5.0が必要っぽいから βの5.0に変えた。
GL2.0で三角形を出したところでGLは止めてる

現状は他のライブラリ (Qt5.0 Win64ビット、OpenCL、Boost、CUDA)等の環境構築してる
0242デフォルトの名無しさん2013/01/30(水) 20:57:46.97
glVertexAttribPointer 関数で指定する stride って、直感に反する仕様だよね。

頂点データが次のようになってた場合、

struct VertexData { float x, y, z; float r, g, b; };
VertexData v[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, ・・・}

size = 3 で stride = 0 の場合は 1, 2, 3, 4, 5, 6 ・・・ って並ぶけど、
これを 1, 2, 3, 7, 8, 9, 13, 14, 15 ・・・って並ばせたいからと言って、
size = 3、stride = 3 では意図した通りにならないじゃん。

この場合、size = 3、stride = 6 と指定しないとダメなんだよね。
stride = 0 だけ特別扱い。

小一時間はまったよ、なんかムカツク。
0243デフォルトの名無しさん2013/01/30(水) 21:23:41.15
はぁ?
0244デフォルトの名無しさん2013/01/30(水) 21:41:18.18
お前には無理だ
頂点属性ごとに別の配列にしとけ
0245デフォルトの名無しさん2013/01/30(水) 21:44:07.76
>>242
あるある
まあ慣れの世界だ
0246デフォルトの名無しさん2013/01/30(水) 22:09:28.49
strideって次のデータが始まるまでの個数だから普通に直感的に思えるが、
そう思わない人もいるんだな。
strideがsize以下は全部sizeと同じとしてるんだろう。
0247デフォルトの名無しさん2013/01/30(水) 22:12:49.36
strideが要求するのが、前の頂点データの終わりからみてなのか始まりからみてなのかが、
普段使う値「0」から間違った想像を働かせてしまう
0248デフォルトの名無しさん2013/01/30(水) 22:19:14.07
sizeof演算子で構造体の大きさ入れる癖付けとけば問題ない
02492422013/01/30(水) 22:36:37.75
まぁ、一度分かってしまえば、直ぐになれるけどね。

>>246
たしかに、ストライドってそういう意味だよね。
歩幅もストライドって言うし。
むしろ、size以下は全部sizeと同じなのが例外規定なのか。

>>247
そういうこと。
ギャップと勘違いしてた。

>>248
うん、そうしとくよ。
02502462013/01/30(水) 23:08:14.37
>>249
> むしろ、size以下は全部sizeと同じなのが例外規定なのか。
いや、仕様をちゃんと確認したら
If stride is 0, the generic vertex attributes are understood to be tightly packed in the array.
ってなってたから、0が特別扱いでびっちり詰まってる意味で、それ以外は値通りなんだろうね。
size>stride!=0だったらどうなるんだろ?
0251デフォルトの名無しさん2013/01/30(水) 23:11:03.86
ありえないだろ
0252デフォルトの名無しさん2013/01/30(水) 23:57:11.79
size=次元数
stride=バイトオフセット
だけど、最終行の過程では単にstride通りにデータフェッチするだけで例外はおこらない
0253デフォルトの名無しさん2013/01/31(木) 00:36:42.97
左端:頂点ID、□□□:3次元ベクトルとすると

/|□□□□□□
--------------
0|□□□
1| □□□
2|  □□□
...

みたいなオーバーラップするデータフェッチも可能ということだね
簡易に時系列データの平滑化やNURBS曲線のKnotに使えそう?
0254デフォルトの名無しさん2013/02/02(土) 17:58:37.68
あとはマイクロソフトがWebGLをサポートしてくれればな・・・
今までも、そしてこれからも、ブラウザシェアはIEがトップだろうし。
まあ、無理っぽいけどさ。
0255デフォルトの名無しさん2013/02/02(土) 18:24:19.69
何この人、複数のスレに同じレス書いて気持ち悪い
0256デフォルトの名無しさん2013/02/02(土) 18:53:53.83
BCCっていう機能使ってるんじゃね?
0257デフォルトの名無しさん2013/02/02(土) 19:59:23.14
シェーダープログラムのレイアウト修飾子を使って定義できる属性インデックスって、
そのシェーダープログラム内で一意ならどんな番号を振ってもいいの?

それとも、小さい数から順に振っていかないとまずい?
0258デフォルトの名無しさん2013/02/02(土) 20:09:04.25
小さい方から順なら指定する意味が半減するだろ
15番までなら自由に指定できるはずだ
02592572013/02/02(土) 20:31:36.28
>>258
> 15番までなら自由に指定できるはずだ

ということは、この番号は単なる識別のためのIDじゃなくて、
何というか、TCP/IP のポート番号みたいなものか。

アプリケーション側と頂点シェーダー側を繋ぐパイプが、
最低でも16本(0-15)は確保されているから、この中で自由に使ってちょ
ということね。

GUIDみたいな一意な番号を適当に振っていいものだと思ってた。
認識を改めねば。

ありがとう。
0260デフォルトの名無しさん2013/02/02(土) 23:18:07.89
冒険しないからこその価値もあるんだよ
IEはただのブラウザじゃなくて膨大な業務クライアントを動かす超重要なプラットフォームなんだから
0261デフォルトの名無しさん2013/02/03(日) 01:09:28.55
ステマックス リローデッド
0262デフォルトの名無しさん2013/02/05(火) 20:27:46.89
たぶん OpenGL 3.0 以降の話になるかと思いますが、

glGenBuffers + glBindBuffer + glBufferData で頂点データを設定して、
glGenVertexArrays + glbindVertexArray + glVertexAttribPointer で VAO を設定します。

その後 glDarwArrays などでレンダリングする前に、
先ほど glGenBuffers で作成したオブジェクトを glDeleteBuffers で削除しても、
全く問題なくリンダリングされるのですが、この挙動はドライバ依存でしょうか。

それとも、glGenBuffers は単価に削除フラグを立てるだけで、
実際は VAO に使われている間は生き続けている、と解釈して良いのでしょぅか。
0263デフォルトの名無しさん2013/02/05(火) 22:19:14.81
ドライバのバグですね
ttp://www.opengl.org/sdk/docs/man/xhtml/glDeleteBuffers.xml
02642622013/02/05(火) 23:09:32.80
>>263
glDeleteBuffers の説明には

If a buffer object that is currently bound is deleted,
the binding reverts to 0 (the absence of any buffer object).

と書かれていますが、どういう意味なのでしょうか。
reverts to 0 というのがよく分からないのですが、
単に「全てのバッファが強制的に削除される」の言い方を変えただけですか。

そして、glVertexAttribPointer の説明には

When a generic vertex attribute array is specified, size, type,
normalized, stride, and pointer are saved as vertex array state,
in addition to the current vertex array buffer object binding.

とも書かれていますが、これは、この関数呼び出し時にバインドしている
vertex array buffer object も一緒に保存されるという意味ではないですか。
0265デフォルトの名無しさん2013/02/06(水) 01:57:25.25
>>263
excite先生にかけて直訳した文章を英文と見比べて
自分なりに意訳してみればある程度推測がつくよ。
0266デフォルトの名無しさん2013/02/06(水) 01:57:52.33
× >>263
○ >>264

だった。失礼。
02672622013/02/06(水) 07:08:24.59
>>265
私には vertex array buffer object も一緒に保存される
としか今は解釈できないです。
0268デフォルトの名無しさん2013/02/06(水) 11:46:07.29
だからハートのにおいがついちゃうんだって
0269デフォルトの名無しさん2013/02/06(水) 20:32:53.63
2chのOpenGLスレ劣化しすぎじゃね?
手元のOpenGL4.0の訳本によれば、
付録D.1.2 削除されたオブジェクトとオブジェクトの名前のライフタイム
バファやテクスチャー(以下省略)が削除される場合、その名前はすぐに無効(例えば未使用と印がつく)になりますが、
実際のオブジェクトはそれが使用されなくなるまでは削除されません。
と、明確に定義されている。
上の例で言えばVertexArrayオブジェクトが生きている限りそこにバインドされたバッファオブジェクトは削除されない
02702692013/02/06(水) 20:34:23.39
これからOpenGLは上がり調子でいけいけなんだから頑張れよ
DirectXはもう新規開発をやめたので今後10年ぐらい
3D APIの標準はOpenGLの4.2あたりになると思う
0271デフォルトの名無しさん2013/02/06(水) 20:37:16.73
他人に文句をたれるより自分がなんとかしろよカス
02722622013/02/06(水) 20:58:14.60
>>269
私もそう思った(期待した)のですが、少し気になることがあります。

glDeleteShader の説明には、
(http://www.opengl.org/sdk/docs/man/xhtml/glDeleteShader.xml)
アタッチされているオブジェクトを glDeleteShader に指定した場合、
削除フラグが立つと明記されています。

glDeleteProgram も、
(http://www.opengl.org/sdk/docs/man/xhtml/glDeleteProgram.xml)
カレントステートで使われていたら削除フラグを立てると明記されています。

glDeleteSync も明記されています。
(http://www.opengl.org/sdk/docs/man/xhtml/glDeleteSync.xml)

しかし、他の delete 系関数の説明には、削除フラグについては何もか書かれていません。
もちろん glDeleteVertexArrays もです。
上記の3つの関数(に関わるオブジェクト)のみ削除フラグが明記されています。

これは、どういうことでしょうか。

深く考えず、全てのOpenGL系オブジェクトについて、
使用中のオブジェクトの削除はフラグが立つだけと考えて問題ないのでしょうか。
02732622013/02/06(水) 20:59:52.46
>>272
> もちろん glDeleteVertexArrays もです。

[訂正]
もちろん glDeleteBuffers もです。
0274デフォルトの名無しさん2013/02/07(木) 00:03:03.36
>If a buffer object that is currently bound is deleted,
>the binding reverts to 0 (the absence of any buffer object).

バインドが解除されて即座にオブジェクトが削除されると読めるから
削除されたはずのバッファを参照するVAOが描画できちゃうのが
気持ち悪いってのは確かにそうやねえ
まあ見えないステートが多くて変に関数使いまわそうとするOpenGLではよくあることよ。。。

(ところでDirectXが新規開発してないってどこから出たんだろう)
0275デフォルトの名無しさん2013/02/07(木) 06:20:18.94
参照カウンタ的なのを明示してくれればいいのにね
0276デフォルトの名無しさん2013/02/07(木) 08:17:56.43
削除する前にバッファを0で埋めとけば解決
0277デフォルトの名無しさん2013/02/07(木) 11:22:23.94
nvidiaのドライバは結構適当で
radeonのは仕様通りに動くと聞いたことがある
0278デフォルトの名無しさん2013/02/07(木) 11:44:02.75
×適当
○柔軟性がある
0279デフォルトの名無しさん2013/02/07(木) 13:03:58.33
インターネットエクスプローラーみたいなもんか
0280デフォルトの名無しさん2013/02/08(金) 01:55:13.20
XNAは今後アップデート予定はないってニュースはあるが
DirectXのアップデート予定は無関係だろ。
0281デフォルトの名無しさん2013/02/08(金) 19:16:23.65
アップデートというか、DirectXtってただのOpenGLランタイムですよね?
APIで受け取ったデータをGPUのOpenGLドライバに流すだけですから
0282デフォルトの名無しさん2013/02/08(金) 19:35:09.25
そんなわけがない
0283デフォルトの名無しさん2013/02/08(金) 22:03:50.64
しかしそれは悪魔の証明である
0284デフォルトの名無しさん2013/02/08(金) 22:44:03.12
>>281
ソース
0285デフォルトの名無しさん2013/02/09(土) 00:04:55.44
しかし酷いな
>>272だから付録のDを読めって。全部明確に書いてあるから
>>274そう読めるなら英語の勉強からやり直せ
0286デフォルトの名無しさん2013/02/09(土) 00:26:54.23
むしろVista以降のOpenGLコールはDirect3DのDDIに流されるって話じゃなかったけ?
0287デフォルトの名無しさん2013/02/09(土) 00:51:30.34
ゲーム用と画像用を同系列で比べるのはいかがなものかと
0288デフォルトの名無しさん2013/02/09(土) 07:07:56.23
>>287によると、ゲームは画像を扱わないらしい。
馬鹿の考えはさっぱり分からない。
0289デフォルトの名無しさん2013/02/09(土) 08:44:53.78
OpenGL初心者の俺にも、>>287の屁理屈はおかしいと思える
0290デフォルトの名無しさん2013/02/09(土) 09:29:47.35
なんでこんなレベルの低い人がいるの?
02912622013/02/09(土) 10:07:58.82
>>284
> だから付録のDを読めって。

>>269 の「OpenGL4.0の訳本」というのが何なのか分からなかったのですが、
http://www.opengl.org/registry/ にある
「OpenGL 4.0 Core Profile Specification (updated March 11, 2010)」
これの和訳なのでしょうか。

このような資料があることを今まで知らなくて、早速 D.1.2 を読みました。
今回の私の場合で言えば、コンテナが保持しているオブジェクトの削除、の事ですね。
確かにコンテナ自体が削除されたり、内部のオブジェクトを別のものに再バインドしない限り、
保持しているオブジェクトは(glDeleteObjectsしても)削除されないと書かれていますね。

また、保持されたオブジェクトを削除した場合の注意点も書かれてますね。
(主に、Gen* で得られる name のアタッチについて)

ありがとうございます。
おかげさまで、はっきりさせることができました。
0292デフォルトの名無しさん2013/02/09(土) 11:06:00.14
これだね
OpenGL4.0グラフィックスシステム
http://www.amazon.co.jp/dp/4877832556/

仕様書はもちろん無料。7140円は翻訳代だろう。
マイナーバージョンレベルで少し古くなってきたけど今のところ全く問題ない
どうせテッセレーションとか使わないし・・・
0293デフォルトの名無しさん2013/02/12(火) 04:36:46.64
marching tetrahedronってどういうときにつかうの?
02942932013/02/12(火) 04:48:56.16
誤爆スマソorz
0295デフォルトの名無しさん2013/02/12(火) 05:03:24.52
ボリュームレンダリングでしょう
0296デフォルトの名無しさん2013/02/12(火) 05:20:22.72
KinectからDepthImageを抽出して、物理計算用メッシュを構築する時
0297デフォルトの名無しさん2013/02/12(火) 06:04:56.75
たしかcubesと違って穴が開かないんだっけ?
0298デフォルトの名無しさん2013/02/12(火) 19:12:18.83
>>295
それはmarching〜の入力データのほうの使い方
0299デフォルトの名無しさん2013/02/13(水) 14:30:39.44
OpenGLというよりかはARtoolkitについての質問なのですが、次のプログラムが正しく動かずに悩んでいます


GLuint m_a;
int a = 0;
float *b;
float *c;
m_a = a;
b = 0;
c = b;

if (!a)
{
glBegin(GL_POINTS);
int k = 0;
for (int i = 0; i < 100; ++i)
{
glVertex3fv(&c[k]); //この行で例外発生
k += 1;
}
glEnd();
}

以上のプログラムなんですが、OpenGL上では正しく機能するのに対して、ARtoolkitで使うとマーカーを読み込んだ際に例外エラーが発生して終了してしまいます
どなたか原因が分かる方はいらっしゃいませんか?
0300デフォルトの名無しさん2013/02/13(水) 14:36:07.02
>OpenGL上では正しく機能
 たまたま動いたのをそう錯覚してるだけでは
0301デフォルトの名無しさん2013/02/13(水) 14:44:02.31
>>299
cが0で&c[k]とかやったら落ちて当然じゃね
0302デフォルトの名無しさん2013/02/13(水) 15:24:13.94
>>299
滅茶苦茶過ぎてワロタ
ARtoolkitというよりC言語の初歩の問題ですから
0303デフォルトの名無しさん2013/02/13(水) 20:19:02.16
OpenGLでも動くわけ無いだろw
クソして書き直せボケ
0304デフォルトの名無しさん2013/02/13(水) 23:16:52.89
OpenGL でテクスチャ貼るなら、今なら GLI(OpenGL Image) 使うのがお勧め?
ver.0.4 だけど、見た感じ良さそうだなぇ。GLM(OpenGL Mathmatics) なら最近使い始めて
満足しています。
0305デフォルトの名無しさん2013/02/14(木) 01:00:02.07
対応フォーマット数的にDevIL (Developer's Image Library)しかないやろ
ilutなんてアレをリスペクトしたツールキットまであるしな
0306デフォルトの名無しさん2013/02/14(木) 03:36:19.02
>>299
言い方はキツいけど >>302 の言うことで尽きてる。
C言語のまともな本を通読するべき。
0307デフォルトの名無しさん2013/02/14(木) 10:17:48.15
無駄に対応フォーマットが多くてもしょうがない
俺のお気に入りはSean Barrettさんの画像ライブラリ
http://nothings.org/
依存しているライブラリがないのでこれ一つコピって来れば動くのがうれしい
0308デフォルトの名無しさん2013/02/14(木) 22:31:35.94
クッソワロタ
0309デフォルトの名無しさん2013/02/15(金) 00:05:48.81
SOIL使いやすいよね
0310デフォルトの名無しさん2013/02/16(土) 14:25:24.60
OpenGL 3.x 以降、コアプロファイルを使うなら、
どのようなプリミティブのレンダリングに対しても、
実用上少なくとも頂点シェーダーとフラグメントシェーダーは必要である、
という認識で良いんですよね。

つまり、シェーダーが無ければ意味がない、と。
0311デフォルトの名無しさん2013/02/16(土) 17:11:00.82
仕様書にシェーダを設定せずに何かを描画しようとしたときの動作は未定義って書いてなかったっけ?
コンパチブルプロファイルだと固定機能パイプラインが使われるけど。
自分でよく確認しましょう。

http://www.opengl.org/documentation/current_version/
0312デフォルトの名無しさん2013/02/16(土) 17:38:08.66
>>311
仕様内を undefined で検索したところ、このように書かれているのを見つけました。

If there is no active program for the vertex or fragment shader stages,
the results of vertex and/or fragment processing will be undefined.

これは結局のところ、「両方が揃わないと結果は未定義」と解釈しました。

ありがとうございました。
0313デフォルトの名無しさん2013/02/16(土) 18:07:16.23
「無視される」じゃなくて「未定義」なんだな・・・
0314デフォルトの名無しさん2013/02/16(土) 18:15:58.15
Radeonは無視しますがGeForceは描画します^^
0315デフォルトの名無しさん2013/02/16(土) 19:31:33.88
>>314
どんな風に描画されるの?

真っ黒とか?
0316デフォルトの名無しさん2013/02/17(日) 00:51:10.95
普通に固定機能だから
0317デフォルトの名無しさん2013/02/17(日) 02:41:32.01
そいつ自作板で数年以上も根拠なくAMDを叩き続けてる
通称雑音っていうイカレ野郎だから。
0318デフォルトの名無しさん2013/02/17(日) 03:29:23.07
AMD叩いてるようにみえるのか・・・俺には逆に見える
0319デフォルトの名無しさん2013/02/17(日) 04:42:26.93
おかしなことやろうとすると完全無視で副作用何も無しというのがOpenGLの良いところだったのにな
0320デフォルトの名無しさん2013/02/17(日) 08:32:29.82
おかしなことをやってるのに無視されてバグが見つけにくいのは悪いところじゃね
0321デフォルトの名無しさん2013/02/17(日) 08:33:49.33
そのためのglGetErrorでは
0322デフォルトの名無しさん2013/02/17(日) 09:29:16.36
glGetErrorの仕様を考えた奴は死ねばいいと思う
全てのOpenGLコマンドの後ろでglGetErrorを呼ばざるを得ず
コードがごちゃごちゃして見にくい事この上もない
0323デフォルトの名無しさん2013/02/17(日) 09:49:34.63
もう20年前以上前、下手すりゃIRIS GLまでさかのぼる話だろうから温かい目で
許してあげようよ。
0324デフォルトの名無しさん2013/02/17(日) 10:07:23.82
>>322
1フレームに1回呼べばエラーの有無はわかるし、あとはエラーが起こりそうなブロック毎とかで十分では
0325デフォルトの名無しさん2013/02/17(日) 10:19:50.11
デバッグモード時条件コンパイルでいいじゃん
0326デフォルトの名無しさん2013/02/17(日) 13:27:17.37
assert(glGetError() == GL_NO_ERROR);
では、ダメなんでしょうか?一行挟むだけ。
0327デフォルトの名無しさん2013/02/17(日) 13:29:29.48
出遅れたけど、ここまでの OpenGL でテクスチャ貼りたい場合の補助ライブラリまとめ。

■GLI(OpenGL Image)
http://www.g-truc.net/project-0024.html

■DevIL
http://openil.sourceforge.net/

■SOIL(Simple OpenGL Image Library)
http://lonesock.net/soil.html

■stb_image.c(Sean Barrett/C image loading library)
http://www.nothings.org/
0328デフォルトの名無しさん2013/02/17(日) 13:32:49.86
ぶっちゃけ DDS 貼りたいだけなんで、GLI を試そうかと思っています。
0329デフォルトの名無しさん2013/02/17(日) 18:00:14.41
色んな形式の画像読み込むのがめんどいだけなんで
OpenGLのテクスチャオブジェクトまで作ってくれるのは余計なお世話だと感じる
coreプロファイルだと使えなくて残念だったり
0330デフォルトの名無しさん2013/02/17(日) 22:04:07.36
おまえっていつも文句しか言わねーのな
0331デフォルトの名無しさん2013/02/17(日) 23:21:26.90
すまん誤爆
0332デフォルトの名無しさん2013/02/18(月) 09:50:30.67
>>329
お前は俺か
それがSean Barrettさんのライブラリな
stb_load()一発で全ての画像ファイルを読み込んでchar*が返ってくる
依存ライブラリがなく1つの.cファイルに全部収まっている(libzすら不要)なので
1つコピってくれば動くのがうれしい

ってか固有名詞付けろよ・・・・
0333デフォルトの名無しさん2013/02/20(水) 21:21:12.04
>>327
ライセンスってどうなってる?
0334デフォルトの名無しさん2013/02/20(水) 21:43:34.08
>>333
GLI --> MIT
DevIL --> LGPL
SOIL --> Public Domain
stb_image.c --> public domain

これくらいサイトを見たり、ダウンロードしてみれば分かるよな
自分で簡単な調査くらいしてから質問しろ
0335デフォルトの名無しさん2013/02/20(水) 21:56:48.92
ベリーセンキュー
stb_image.cをダウンロードしてソース見ながら聞いたけどまさか1行目にあるとは思わなんだ
0336デフォルトの名無しさん2013/02/20(水) 22:01:29.06
>>335
stb_image.c のページに書いてあるんだが・・・

source: stb_image.c public domain C image loading library
0337デフォルトの名無しさん2013/02/20(水) 23:26:37.78
で、それらのライセンスって何がどう違うの?
0338デフォルトの名無しさん2013/02/20(水) 23:35:39.48
それはスレチだろ

それにまじめな話、ライセンスはデリケートなものだから、
又聞きじゃなくて、ちゃんと原文を調べた方が良いと思う
0339デフォルトの名無しさん2013/02/20(水) 23:45:49.14
知らないなら黙っててくれませんか?
0340デフォルトの名無しさん2013/02/21(木) 00:08:26.79
>>339
スレチだろというぶっきらぼうな言い方で気を悪くしたのなら謝る、ごめん。

あれらのライセンスについては自分なりに理解はしてるつもりで、
今まで会社でもそれで大きなトラブルは起していないので、
それを私個人の意見として説明することもできるけど、
十中八九だれかが解釈の間違いを指摘するはず。

以前もこのスレや別のスレなどでライセンスの解釈を巡って
激論になったような気がする。
その中には悲しいかな罵倒雑言も多く含まれていた。
たぶん、私じゃなく、別の人が説明しても似たような状況になると思う。

そうなると予測していながら同じ状況を招くきっかけを作るのは
やっぱり良くないと思う。

この板にもライセンス総合スレがあるから、
そちらで訊いた方が良くないかな。
0341デフォルトの名無しさん2013/02/21(木) 08:21:36.46
>>334
Public Domain と public domain に違いはあるのですか?
0342デフォルトの名無しさん2013/02/21(木) 19:58:33.41
>>341
ないよ

>>327 にあるそれぞのページからコピペしただけ
0343デフォルトの名無しさん2013/02/21(木) 22:32:48.37
MIT:好きに使っていいから俺の名前を書けや
LGPL:微妙に感染症 諸悪の根源のGPLよりはましだが近づかないに越したことない
PD:どうにでもして(その動画、ウイルスかもよ)
0344デフォルトの名無しさん2013/02/21(木) 22:44:50.66
MITやLGPLなどは全世界で解釈は一致してるけど、
パブリックドメインは国によって扱いが違う、
とかいう話を聞いたことがある。
0345デフォルトの名無しさん2013/02/21(木) 23:17:37.95
日本では著作権の放棄ができないからパブリックドメインは法的にはないんだっけな

LGPLは基本的には安全だよ
0346デフォルトの名無しさん2013/02/21(木) 23:54:55.73
インポートライブラリがグレーなのが気になる
0347デフォルトの名無しさん2013/02/22(金) 18:30:09.74
>>343
BSDlicenseは?
0348デフォルトの名無しさん2013/02/22(金) 19:58:05.05
ググレカス
0349デフォルトの名無しさん2013/02/22(金) 20:26:02.81
ククレカレー
0350デフォルトの名無しさん2013/02/22(金) 22:26:44.95
PS4ってOpenGL使えるの?
0351デフォルトの名無しさん2013/02/22(金) 22:46:07.78
OpenGLベースのカスタムAPIじゃねーの?
0352デフォルトの名無しさん2013/02/24(日) 00:09:49.74
OpenGLのAPIそのまま使うだろう
変な機能入れたいならOpenGL拡張にしてしまえば良いだけだし
既存のPC用のデバッガやらなんやらのツール流用も楽だろうし
0353デフォルトの名無しさん2013/02/24(日) 02:52:37.92
と、思うだろ?
0354デフォルトの名無しさん2013/02/24(日) 04:34:32.35
実はPS4のグラフィックス関係のAPIはDirectXみたいな感じになるらしいよ
0355デフォルトの名無しさん2013/02/24(日) 08:35:29.30
と、書けば信じてくれるかな?
0356デフォルトの名無しさん2013/02/24(日) 09:23:08.02
情報ソースが複数あれば多少信じるかも知れん。

自分の目でそのAPIを見られれば100%信じると思う。
0357デフォルトの名無しさん2013/02/24(日) 09:31:56.96
と、予想しただろ?
0358デフォルトの名無しさん2013/02/24(日) 10:16:52.05
PS Mobile APIなんじゃねーの
0359デフォルトの名無しさん2013/02/24(日) 10:40:54.66
PS4は、Android 5.0だよ
グラフィックAPIは、Android 5.0に標準搭載されるOpenGL ES 3.0
0360デフォルトの名無しさん2013/02/24(日) 12:13:39.53
無料ソフトで遊べるのか安上がりだねついでにwinも動けばお買い得
0361デフォルトの名無しさん2013/02/24(日) 12:35:49.59
>>359
はいはいw
0362デフォルトの名無しさん2013/02/24(日) 12:59:30.42
ほら吹きだなぁ
0363デフォルトの名無しさん2013/02/24(日) 13:16:53.31
dalvik VMの上で動くJavaアプリのAndroidなんて誰が使うんだボケw
ゲーム機はスマホじゃねーんだよ。
0364デフォルトの名無しさん2013/02/24(日) 14:25:32.57
>>363
Androidは、既にゲーム機向けのOSになっているよ
今年は世界中で一気にAndroidゲーム機が発売されるしね
0365デフォルトの名無しさん2013/02/24(日) 14:37:22.33
JNI使えるからな。
0366デフォルトの名無しさん2013/02/24(日) 15:52:45.71
ゲーム専用機が滅んだりして
0367デフォルトの名無しさん2013/02/24(日) 16:21:02.68
Androidはサウンド系が弱いんだよね。
0368デフォルトの名無しさん2013/02/25(月) 01:35:33.25
>359
マジレスしてしまうが、それはないだろw
ES 3.0ってジオメトリシェーダーとかテッセレータとかないんじゃなかったっけ?
PS3ではgcmっていうRSX特化APIがあったけど、シェーダモデル5.0時代に似たようなAPIはそれなりに死ぬような気がするし(gcmはあれ制御がめっさめんどくさかった……)、
PS4は開発のしやすさ・PC似を標榜しているので、フツーにOpenGL4.3以上な希ガス。
03693682013/02/25(月) 01:46:46.41
>>364
それはないと思う。
共有メモリ方式への対応、速攻で動画をシェアできたり、サスペンドできたりするためにはハードへの高度な最適化が必要で、PS3と同様に完全にカスタムなOSを作り込むはず。
03703682013/02/25(月) 01:47:48.48
>>364
確かにAndroidもベンダが自由にカスタマイズできるが、
PS4の各種機能に完全対応させるのは一から作るより色々面倒が多い気がするし、
仮にやったら他Androidゲーム機との互換性はかなり失われるはずだ(Java VMで動作させれば大丈夫かもしれんが、それだとスピードが犠牲になりすぎる)。
Androidを採用するメリットはあまりない。
そもそもゲーム機はスマホと違って他機種との互換性をそれほど考慮する必要はないし、だったらいっそ一からカスタムで作りますわってなると思う。
ソフト面がわりかしが苦手なSCEだって、OSを一から作る技術と自負くらいはあるよ。
0371デフォルトの名無しさん2013/02/25(月) 10:25:14.33
実際Androidベースのゲーム機出るのに何言ってんだコイツ
0372デフォルトの名無しさん2013/02/25(月) 12:46:25.87
PS4のことを指しているならそれはない。
PCベースのアーキテクチャではあるがOSが何かはまだ不明。
Android = Java VM上で動くアプリである可能性はほとんどない。
理由は実行速度が遅すぎるから。
0373デフォルトの名無しさん2013/02/25(月) 13:18:38.21
OUYAとかのことを言ってるんだけど。
PS4とかアホか
0374デフォルトの名無しさん2013/02/25(月) 16:28:26.42
ゲーム機はタブレット同様コンテンツ消費型のデバイスだから、OSとしては画面占有(あるいはタイル形式の画面分割)型アプリとネットワークサービスを前提とするAndroidが向いている面はあるかな
0375デフォルトの名無しさん2013/02/25(月) 18:15:04.11
>>371
Androidを選ぶゲーム機メーカーがあるとすれば、
それは
・自力でOSを作るだけの技術or体力がない。
あるいは
・ハードの特殊機能への最適化よりも、スマホ開発者などの取り込みを優先した。
のいずれかではないかと。
いずれも、SCEのPS4には当てはまらないかな。
後者については、PS Vitaの例のSDKは当てはまってる気がするが。
0376デフォルトの名無しさん2013/02/26(火) 21:04:29.44
OSよりライブラリだろ
馬鹿しかいねえ
0377デフォルトの名無しさん2013/02/26(火) 22:14:37.16
ポカーン
0378デフォルトの名無しさん2013/02/27(水) 08:02:20.58
FirefoxOSって何?
GLも動くの?
0379デフォルトの名無しさん2013/02/27(水) 11:17:30.34
GLはプログラムを作るためのAPIであって、何かのアプリの上で
動くものではない。
0380デフォルトの名無しさん2013/02/27(水) 12:13:14.26
>>378
Firefox(Android版もWebGL対応)ベースなら、動くんじゃないの
0381デフォルトの名無しさん2013/02/27(水) 16:09:12.28
FirefoxOS って Android とは別物だよね?
っていうかそもそも ChromeOS って Android のこと?
0382デフォルトの名無しさん2013/02/27(水) 17:18:27.02
ChromeOS も別物だよ
0383デフォルトの名無しさん2013/02/27(水) 19:19:35.43
JavaScriptでOpenGLとかやってくれと言われたら発狂するけどな
0384デフォルトの名無しさん2013/02/27(水) 19:32:27.88
情弱乙
0385デフォルトの名無しさん2013/02/27(水) 20:52:23.46
>>383
一番簡単にOpenGLできるのが、JavaScriptだよ
0386デフォルトの名無しさん2013/02/27(水) 21:06:55.22
JavaScriptって作るの簡単、メンテやっかいなイメージある
0387デフォルトの名無しさん2013/02/27(水) 21:15:03.06
>>383
WebGL
0388デフォルトの名無しさん2013/02/27(水) 22:38:45.76
トライアングル一個出すならJavaScriptでいい
ゲーム作るのは勘弁して><
0389デフォルトの名無しさん2013/02/28(木) 21:09:17.48
うわぁ・・・
0390デフォルトの名無しさん2013/03/01(金) 00:39:53.19
前後に配置したオブジェクトを
視点を遠くして描画すると奥のオブジェクトが見えてしまいます
何でこんなことになってしまうんでしょうか?
ttp://pc.gban.jp/?p=51112.png

openGL ES 2.0使ってます
tp://www.saturn.dti.ne.jp/npaka/android/HelloGL20_21/index.html
このサイトで紹介されているソースを
.xが読み込めるように書き換えただけで描画に関する部分は殆んど変えてません
0391デフォルトの名無しさん2013/03/01(金) 00:53:27.34
デプスバッファの精度が足りないのでは?
gluPerspectiveに与えるニアクリップの値をなるべく大きくしてみてください
0392デフォルトの名無しさん2013/03/01(金) 01:17:53.63
>>391
解決しました!
ほんとに助かりました、ありがとう!
0393デフォルトの名無しさん2013/03/02(土) 12:05:34.57
1枚のテクスチャ(例えば64*64px)に複数のキャラクタ(例えば32*32pxが4つ)が書かれていて、
glTexCoordPointerで1キャラクタ分の領域だけ指定して描画するって常套手段だと思うんですけど、
そうすると、端に隣のキャラクタの色が混じってしまいます。
これを回避する手段ってなんかありますか?

環境はAndroid OpenGL ES 1.1、C++です。
0394デフォルトの名無しさん2013/03/02(土) 12:22:07.29
LINEAR補間ではなくNEARESTを使え
それで駄目なら0.5ずらせ
0395デフォルトの名無しさん2013/03/02(土) 12:32:49.99
>>394
やっぱそれくらいの対処しかないですかね?
0.5ずらしたりすると、本来表示したかった端の1px分の模様が狭くなっちゃいますよね
そんな些細なことは諦めるしかないのかなぁ
0396デフォルトの名無しさん2013/03/02(土) 12:41:05.99
元から1px小さいサイズに合わせて絵を描いておけば問題ない
0397デフォルトの名無しさん2013/03/02(土) 13:20:54.00
シェーダで TexCood を mod すればいい
0398デフォルトの名無しさん2013/03/02(土) 13:32:48.06
>>397
フラグメントシェーダー内で texture 関数に渡すテクスチャ座標を mod で調整しても、
glTexParameter系関数でテクスチャ フィルタを GL_LINEAR に設定されていれば、
指定した座標の周囲4テクセル分が加重平均されて隣のキャラクタの色が混じるよ。
0399デフォルトの名無しさん2013/03/02(土) 13:37:44.04
言われてみればそうだった
04003932013/03/02(土) 14:04:26.61
>>396
そうすると、64*64の画像に32*32のキャラを4枚詰めるのは無理になりますよね…

>>397,398
いずれにせよ、OpenGL 2.0は私には難しすぎる(白目)

何かしら妥協するしかないようですね。
ありがとうございました。
0401デフォルトの名無しさん2013/03/02(土) 14:21:47.22
1.1使えや
0402デフォルトの名無しさん2013/03/02(土) 15:27:39.23
キャラが違うなら別テクスチャにしちゃってもいいんじゃないかな
0403デフォルトの名無しさん2013/03/02(土) 15:53:10.69
1キャラクターがアニメーションさせたいのではなく
1枚のテクスチャーに複数のキャラクターか
止めとけとしか
0404デフォルトの名無しさん2013/03/02(土) 15:54:26.42
テクスチャの解像度上げて加工してみるとか。うちも色混ざってるのかな
ドット絵で右と下1ドット空けてるから平気なのかも。
0405デフォルトの名無しさん2013/03/02(土) 16:33:38.89
>>403
なぜ止めた方が良い?

例えば1枚のテクスチャにアルファベットや数字を並べて、
そのテクスチャを参照してテキストを描くことはよくあるけど、
これは本質的には1枚のテクスチャーに複数のキャラクターと同じではないの?
0406デフォルトの名無しさん2013/03/02(土) 16:57:45.36
端のピクセルの中心座標は(0,0)ではなかったんじゃ
ピクセルの大きさの半分だけオフセットさせとけば問題ないんじゃね?
ドットバイドットで描画するならバイリニアフィルタも関係なくなるし
0407デフォルトの名無しさん2013/03/02(土) 17:35:21.03
1ドット以上空けて絵を並べるのは常識
0408デフォルトの名無しさん2013/03/02(土) 17:52:13.32
俺はリニア補間するときに確実に透明な幅を存在させるために2ドットあけちゃう
04093932013/03/02(土) 19:20:04.49
>>407
やっぱそうなんだ
勉強になりました
0410デフォルトの名無しさん2013/03/02(土) 19:37:38.05
あ、あの、あのね、怒らないで聞いてね
ありんこ一匹通さないヌリカベみたいに通路をふさぐことを売りにするキャラがいて
1ドット空いちゃうとありんこがいっぱい通っちゃって困ると思うんですが・・・
そういう場合どうしたらいいのでしょうか
0411デフォルトの名無しさん2013/03/02(土) 19:49:09.76
それでいいならかまわんが全然勉強になってなくね>>406の例や滲む理由がわかってない
1ドット空けなくても滲まないのが正常だと思うのだが
0412デフォルトの名無しさん2013/03/02(土) 20:02:07.49
補間するからさ
0413デフォルトの名無しさん2013/03/02(土) 20:42:57.85
>>410
テクスチャに描かれたイメージ群は、
それぞれ隣のイメージと1ドット(テクセル)空けてあったとしても、
それをポリゴンに貼る際に参照するテクスチャ座標を正しく選べば、
空けた1ドットの部分は参照されない。

この説明では分かりづらいでしょうか。
0414デフォルトの名無しさん2013/03/02(土) 21:06:48.75
画面を32x32のチップで敷き詰めて構成する、かつWindowサイズを変更して伸張可能という仕様で
Windowのデフォルトのクライアントサイズは640x640のとき
デフォルトではテクスチャは等倍で描画されるのが好ましい
つまり画面上のピクセルとテクスチャのピクセルが完全に1対1で対応して欲しいんだけど
1ドットあけると31x31のテクスチャになってしまって引き伸ばされてぼやけて見えてしまう←これが問題
しかしニアレストネイバーに設定するとWindowサイズが変更された場合は補間して欲しいので困る
Windowサイズによってテクスチャの補間方法を切り替えるくらいしか対応策が思いつかないんだけどそれってどうなのってところ
0415デフォルトの名無しさん2013/03/02(土) 21:30:59.60
視点を離して補完を切れば解決だな
0416デフォルトの名無しさん2013/03/02(土) 22:08:03.97
ひとつのチップが占有する領域を33x33にしてそのうち32x32を使えばいいじゃん・・
0417デフォルトの名無しさん2013/03/02(土) 22:51:16.11
>>416
33じゃそもそもチップの座標を正確に表せないからその時点でピクセル単位での指定が
できなくなっちゃうじゃない
0418デフォルトの名無しさん2013/03/02(土) 22:56:53.49
なんで正確に表せないと思ったんだ?
0419デフォルトの名無しさん2013/03/03(日) 02:39:21.98
テクスチャ
 0123456
0□□□□□□□
1□■■□■■□
2□□□□□□□

UVの指定(単位はドットで横方向のみ)
(1-3)(4-6)

画面
■■■■

蟻が通る隙間はない
0420デフォルトの名無しさん2013/03/03(日) 02:49:17.60
図が正確じゃなかったんで書き直す

0 1 2 3 4 5 6 7
|□|■|■|□|■|■|□|

なんで

UVの指定(単位はドットで横方向のみ)
(1-3)(4-6)

ってなる
0421デフォルトの名無しさん2013/03/03(日) 02:52:28.60
くそーずれた…

0 1 2 3 4 5 6 7
|□|■|■|□|■|■|□|

スレ汚しスマソ
0422デフォルトの名無しさん2013/03/03(日) 03:12:44.17
GL_TEXTURE_MAG_FILTERをGL_LINEARでGL_TEXTURE_WRAPがGL_CLAMPで
(0.5, 0.5)-(31.5, 31.5)をglTexCoord, glVertexすればいい話ではないのかな?
0423デフォルトの名無しさん2013/03/03(日) 08:38:19.46
0.5ずらせよ・・・
その絵が書けるならもう分かってるんだろ
ピクセルの中心位置は整数座標にはないんだよ
0424デフォルトの名無しさん2013/03/03(日) 10:27:55.54
GeForce GTX TITAN すげー
04253932013/03/03(日) 12:21:49.16
>>423

前提として、こういう画像があって、4番のみ表示したい。拡大、リニア補間で。
http://iup.2ch-library.com/i/i0865783-1362269931.png

何も考えずにやると、このように隣のキャラクタの色が混じってしまう(上端、左端)
http://iup.2ch-library.com/i/i0865784-1362269931.png

対策として0.5ずらすと、混じらなくはなるけど、端の黄色線が期待より細くなってしまう。
http://iup.2ch-library.com/i/i0865785-1362269931.png

自分としては、それは嫌だったので、0.5ずらすのではなく、
元画像でキャラごとに1ドット空けることで回避することにします(これが期待値)
http://iup.2ch-library.com/i/i0865786-1362269931.png
0426デフォルトの名無しさん2013/03/03(日) 13:19:28.07
OpenGLで2Dゲーム作る場合glOrthoでWindowのピクセル数と一致させる方が(-1.0〜1.0)とかのサイズにするよりメジャー?
0427デフォルトの名無しさん2013/03/03(日) 15:21:20.60
俺はGL座標系に慣れるために+1-1でやってるな、メジャーかは知らないが
0428デフォルトの名無しさん2013/03/03(日) 16:11:20.76
>>425
> 元画像でキャラごとに1ドット空けることで回避することにします(これが期待値)
さらに言うと、空けた1ドットをこの場合は黄色で書いておかないと
縁が薄く黒ずんだりする。
0429デフォルトの名無しさん2013/03/04(月) 13:48:41.40
gl.h と glext.h だけ使って勉強したいんだけどどういう方法がオススメかな?
glu.h とか glaux.h とか glut.h とか glfw.h とか使いたくない感じです。
やっぱり NeHe あたり?
0430デフォルトの名無しさん2013/03/04(月) 17:56:12.35
何がやりたいのか明確に
OpenGLの勉強がしたいのならglutを使わない理由がない
もっとローレベルのウィンドウ作ってOpenGLコンテキスト作りたいだけなら
適当にその辺のドキュメントを読め
0431デフォルトの名無しさん2013/03/04(月) 21:32:28.13
DirectXおすすめ
DirectX使えばOpunGLが糞だと分かる
0432デフォルトの名無しさん2013/03/04(月) 21:35:12.58
>>431
レイヤ違い&スレ違い&キチガイ
去れ
0433デフォルトの名無しさん2013/03/05(火) 00:35:12.23
DirectXがそんなに素晴らしいものなら任天堂やソニーのゲーム機とか
AndroidやアップルのOSにも採用されてるはずだわ
0434デフォルトの名無しさん2013/03/05(火) 00:41:39.24
素晴しいものこそが採用されるなんて幻想は捨てたほうがいい
DirectXが素晴らしいのかどうかは置いといて
0435デフォルトの名無しさん2013/03/05(火) 07:53:26.17
DirectXなんて素晴らしくないよ、普通レベル
但しOpenGLは産廃レベル
0436デフォルトの名無しさん2013/03/05(火) 08:51:04.96
いつのOpenGLの話をしてるんだw
今の4.2系列はかなりマシだぞ
0437デフォルトの名無しさん2013/03/05(火) 14:26:26.12
>>430
demo の64kとかを作るために容量削ろうと思ってるんですが、
初めはglut込みで勉強して、
後から使わないように変更するって方法がよさそうですかね?
0438デフォルトの名無しさん2013/03/05(火) 21:09:38.93
これからの時代は、AVXとOpenCLで自力レイトレだよ!

OpenGLだのDirectXだのなんて、しょせんは光の「現実」をまるで無視したごまかしだからね
0439デフォルトの名無しさん2013/03/05(火) 21:18:19.37
光の「現実」って、電磁波のシミュレートか

もうリアルタイムでできる時代なのかぁ
0440デフォルトの名無しさん2013/03/05(火) 21:53:38.61
レイトレは量子力学的に光の現実じゃないだろ・・・
0441デフォルトの名無しさん2013/03/05(火) 22:47:07.26
まぁ、レイトレが光の現実とは言ってないけどね。
フォトンマッピングとか言えばいいのか?
0442デフォルトの名無しさん2013/03/05(火) 22:51:34.60
ぷっ
0443デフォルトの名無しさん2013/03/05(火) 22:57:33.74
レンズフレアとかブルームって、レイトレでどうやってシミュレートするの?
>>441 の言うフォトンマッピングでもいいけど。

まだまだとても現実的な時間でシミュレートできるとは思えん。
もちろん OpenGL や DirectX などが普通にリアルタイムで処理している
光の「現実」をまるで無視したごまかし映像より良く見えないと意味が無いし。
0444デフォルトの名無しさん2013/03/05(火) 23:00:49.40
現実の光景だって脳がシミュレートした結果なんだからこだわっても仕方なくね
0445デフォルトの名無しさん2013/03/05(火) 23:01:55.91
>>441
量子力学に弱いならもうそれ以上はやめた方がいい
フォトンマッピングじゃ二重スリットすら現実に沿ってレンダリング出来ないだろ
0446デフォルトの名無しさん2013/03/05(火) 23:06:22.62
glBlitFramebuffer()とかの"blit"ってそういう英単語があるのかと思ってたら
BLock Image Transferの略だったのか。今知った
0447デフォルトの名無しさん2013/03/05(火) 23:22:43.14
iが入ってるのは珍しいな
よくあるのはBltでBLock Transferの略っていうのだけど
0448デフォルトの名無しさん2013/03/06(水) 10:16:46.67
>>434
全く同意
民主党ですら政権とれたくらいだし
広告代理店とつるんで宣伝する能力の方が大きい
要はステマ
0449デフォルトの名無しさん2013/03/10(日) 02:25:43.78
フォトンマッピングも広い意味でレイトレに属するけど、全部光線光学で処理しているから波動光学的、量子光学的な現象はそのままではシミュレートできない。
でも日常的な情景のほとんどは光線光学でリアルに表現できるし、分散や干渉、回折のような波動光学的エフェクトもモデル化次第である程度は表現可能。
0450デフォルトの名無しさん2013/03/10(日) 09:43:55.26
光の基本的要素である波長を扱ってない時点でお察しくださいとしか
0451デフォルトの名無しさん2013/03/10(日) 10:39:14.84
薄膜で虹が出たら格好良いね
0452デフォルトの名無しさん2013/03/10(日) 11:28:28.28
光速も無視してるよね。あと重力とか。
0453デフォルトの名無しさん2013/03/10(日) 12:22:45.56
重力に関しては光子は質量ゼロとされてるしあったとしても無視できるんじゃね?
強いて言えばルミネセンスにおけるエネルギー変換で関係するくらい?

いずれにしてもOpenGLがカバーする範疇でないし
GPGPUとしてシミュレートするにしても
当分物理モデルで頑張るよりビヘイビアモデルのほうが
「それらしい」結果が得られるのは間違いない
0454デフォルトの名無しさん2013/03/10(日) 12:41:00.87
重力レンズでぐぐ
0455デフォルトの名無しさん2013/03/10(日) 14:17:26.50
重力レンズは光というより空間が歪んだ結果だから
非ユークリッド空間(リーマン幾何学?)を扱うところから議論しないといけないんでね?

空間が歪むような質量と日常的な物体の質量を
単精度で同時に扱うのは工夫が要るだろうし
最終的な可視化部分以外でOpenGLを使うメリットはないわな
0456デフォルトの名無しさん2013/03/13(水) 17:17:20.90
GeForce GTX TITAN が最強すぎる件
0457デフォルトの名無しさん2013/03/13(水) 17:28:56.60
知るかボケ
0458デフォルトの名無しさん2013/03/14(木) 16:17:17.27
>>299
必要な配列の大きさの分mallocするまでROMな^^
0459デフォルトの名無しさん2013/03/14(木) 20:24:37.12
>>456
あの価格で、Teslaに近い倍精度浮動小数点演算性能を持っているところが個人的にイイ。
0460デフォルトの名無しさん2013/03/15(金) 18:50:17.88
一般相対論扱うならテンソル方程式を解かせるという基地外じみた事になる
しかも日常的なものなら光速も重力も殆ど影響しないという
0461デフォルトの名無しさん2013/03/15(金) 19:14:15.83
非日常を描くゲームもある
0462デフォルトの名無しさん2013/03/15(金) 19:53:15.19
高校生がセックスするエロゲーとか非現実的過ぎるよな
0463デフォルトの名無しさん2013/03/15(金) 19:54:26.51
家具屋姫
0464デフォルトの名無しさん2013/03/15(金) 20:36:33.10
>>462
俺が高校生だった時は、俺以外はみんな普通にセックスしてたぞ
0465デフォルトの名無しさん2013/03/15(金) 21:33:10.91
>>464
ホモですか?
0466デフォルトの名無しさん2013/03/15(金) 23:02:49.46
ここにいる性欲猿は在日朝鮮人
0467デフォルトの名無しさん2013/03/16(土) 04:22:52.61
愚かなフラグメントよ・・・
0468デフォルトの名無しさん2013/03/17(日) 21:37:27.57
https://www.youtube.com/watch?v=9vTI0c56vCc
0469デフォルトの名無しさん2013/03/17(日) 21:42:34.94
DirectX最高!OpenGLは糞!
0470デフォルトの名無しさん2013/03/17(日) 21:54:47.31
↑
0471デフォルトの名無しさん2013/03/17(日) 22:39:27.72
今時ラスタライズ論者とかないは
0472デフォルトの名無しさん2013/03/23(土) 15:06:13.96
>>445
位相情報をもたせたフォトンを使ったフォトンマッピングの拡張って普通にありますよね
0473デフォルトの名無しさん2013/03/23(土) 18:31:01.79
量子力学を持ち出すのもおかしな話だと思うけど・・・
二重スリットって結局回折干渉の効果が必要になると思うんだけど
位相情報をもたせたフォトンとやらはどのようにそれを実現するの?
その手法知らないからペーパー教えて。
0474デフォルトの名無しさん2013/03/23(土) 19:15:40.78
いい加減スレチ
0475デフォルトの名無しさん2013/03/23(土) 20:06:52.73
悔しかったから必死に調べたんだろう。その点は理解も出来る。
だがスレチは帰れ。

久しぶりにレス数増えたと思ったらこれだよ、まともな話題をくれ!
0476デフォルトの名無しさん2013/03/23(土) 22:09:16.12
わからないことはマトモな話題じゃなくスレチ
0477デフォルトの名無しさん2013/03/24(日) 01:29:10.93
↑分からないからOpenGLとまったく絡まない話だと気づけないバカ
0478デフォルトの名無しさん2013/03/24(日) 01:35:27.48
まあどうせ自演だし
0479デフォルトの名無しさん2013/03/24(日) 09:30:39.29
俺に任せろ

nvidiaのカードでC#(OpenTK)でトランスフォーム フィードバック バッファーを使おうとすると
varying変数名が必ず文字化けして使えないんだけどどうにか直せないか
コードそのままにatiのカードに取り替えるとちゃんと機能する
数年前からずっとこの調子で早く直せよ糞VIDIA
0480デフォルトの名無しさん2013/03/24(日) 12:11:40.83
nvidiaを糞だなんてとんでもない
上品にfuckinvidiaと呼びなさい
0481デフォルトの名無しさん2013/03/24(日) 19:08:21.40
>>479
http://www.opentk.com/node/1389
次善策はあるみたいね。
04824792013/03/24(日) 22:57:47.95
それは見たけど無理
どのみちnVIDIAだけの問題だから打つ手はないと思われ
0483デフォルトの名無しさん2013/03/25(月) 00:06:42.63
カードに応じてシェーダ切り替えればいい
0484デフォルトの名無しさん2013/03/25(月) 00:46:58.09
4Gamer.net ― OpenGLがOpenGL ESを呑み込む!? 次世代TegraがOpenGLに対応する理由も見えてきた,GTC 2013のKhronosセッションレポート
http://www.4gamer.net/games/107/G010729/20130324001/
0485デフォルトの名無しさん2013/03/25(月) 00:51:41.90
ESとはなんだったのか
0486デフォルトの名無しさん2013/03/25(月) 01:07:45.33
webglとはなんだったのか
0487デフォルトの名無しさん2013/03/25(月) 01:15:13.57
webglになんかあったの?
0488デフォルトの名無しさん2013/03/25(月) 08:45:34.35
AppleとMSがやるきナッシング
0489デフォルトの名無しさん2013/03/25(月) 09:27:05.55
webgl取り込んだらGoogleに負けるの必至だからな
0490デフォルトの名無しさん2013/03/25(月) 19:27:51.91
グーグルさんが作ってねじ込めばいい、オラァケツだせぇスパパパン、ずぶっと
0491デフォルトの名無しさん2013/03/25(月) 20:41:19.23
IE11に期待したいが……多分載らないだろうな。
0492デフォルトの名無しさん2013/03/25(月) 22:35:26.52
まずは、OpenGLがDirectXを飲み込むまで待つしかないな。
0493デフォルトの名無しさん2013/03/25(月) 22:53:04.11
Fahrenheit「」
0494デフォルトの名無しさん2013/03/27(水) 13:43:55.09
SL#(えすえるしゃーぷ)とは、GPUで実行されるプログラマブルシェーダーを、超高級言語である
C#で書けてしまうという夢のようなオープンソースのフレームワークである。
http://monobook.org/wiki/SL_Sharp
0495デフォルトの名無しさん2013/03/27(水) 22:37:38.80
何これw、超面白そうなんですけど
誰かもっと詳しい情報持ってない?
0496デフォルトの名無しさん2013/03/28(木) 01:38:56.35
Shader Language Sharpの略である。
0497デフォルトの名無しさん2013/03/28(木) 01:45:11.34
シェーダ言語って元から充分に高級言語だし、わざわざ間に何か挟む意味あるかね
0498デフォルトの名無しさん2013/03/28(木) 09:10:56.55
Cgさんディスってるの? PSMさんが黙ってないよ?

GLSLは構造体とか配列の扱いがファッキンなのが良くない
0499デフォルトの名無しさん2013/03/28(木) 09:34:16.13
最高の頭脳はこんなところで油を売ってる暇はないし
暇があったとしてもとっくに他のコミュニティに移動してる

こんな匿名の叩き煽りが日常茶飯事で自分にメリットが薄いようなところは
最高の頭脳でなくともまともな人間でもさっさと去るよ

他にコミュニティがない10年前なら最高の頭脳もいたかも知れないが、
いつの間にかいなくなって今ではその幻想だけが残ってる

最高の頭脳持ってる奴は他のコミュニティに行っても入っていけるから困らなかっただろう
そしてそういったコミュニティで相手にされない奴が集まってるのが2ch
0500デフォルトの名無しさん2013/03/28(木) 12:03:06.55
ここは自己紹介スレじゃないよ
0501デフォルトの名無しさん2013/03/29(金) 17:00:41.68
>>497
DirectXとOpenGL両対応する場合には必要なんでない?
0502デフォルトの名無しさん2013/03/29(金) 19:17:43.04
directxだけでよし
0503デフォルトの名無しさん2013/03/29(金) 21:51:33.67
>>502
お前それLinuxでも言えんの?
0504デフォルトの名無しさん2013/03/29(金) 22:32:11.23
CUDAだけでよし
0505デフォルトの名無しさん2013/03/30(土) 11:39:41.51
お前それRadeonでも言えんの?
0506デフォルトの名無しさん2013/03/30(土) 14:37:18.27
OpenGL Insights 日本語版
http://www.amazon.co.jp/dp/4862462014/

原書から10ヶ月も経たずして翻訳された
0507デフォルトの名無しさん2013/03/30(土) 16:25:23.83
http://books.google.com/books?id=CCVenzOGjpcC&;printsec=frontcover&source=gbs_ge_summary_r&cad=0
0508デフォルトの名無しさん2013/03/30(土) 18:23:12.10
>>506
ただし¥13,650
0509デフォルトの名無しさん2013/03/30(土) 22:47:36.03
もう既にDirectXは終わってるよね
0510デフォルトの名無しさん2013/03/30(土) 23:03:33.56
>>506
日本語訳が酷かった
0511デフォルトの名無しさん2013/03/31(日) 01:04:49.40
>>510
危うく日本語版買いそうだった

ありがと、原書の方を買うわ
0512デフォルトの名無しさん2013/03/31(日) 04:01:14.22
http://www.amazon.com/dp/1439893764/
ボッタ栗
0513デフォルトの名無しさん2013/03/31(日) 10:58:44.09
ボーンデジタルは特定の翻訳者が絡むとボッタクリ価格になる印象
0514デフォルトの名無しさん2013/03/31(日) 15:33:02.25
赤本もそうだけど、価格が2倍になるのは止めて欲しいよね。
0515デフォルトの名無しさん2013/03/31(日) 22:38:23.59
ゲームなんかで高速にテキスト(文字列)をレンダリングするのって、
やっぱりテクスチャに予め文字を描いておいて、
それを植字する感じで1文字ずつレンダリングしていくしかない?

レンダリング解像度が決め打ちならいいんだけど、
解像度を何種類か用意するなら、文字テクスチャも
その種類分だけ用意しないといけないんだよね?

[環境]
OpenGL 4.0 以降
05165152013/03/31(日) 22:49:38.16
>>515
OS を書き忘れました。
linux (Fedora 18) です。


あと、テキストは日本語です。
0517デフォルトの名無しさん2013/03/31(日) 23:11:01.20
解像度変更の時に書き直せば良いんじゃないか?
少し荒れて良いなら一番大きく書いた物を縮小でも良し
0518デフォルトの名無しさん2013/04/01(月) 01:18:21.27
まずは秒間何文字更新するかを明確にしろ。
内容を変更しないフレーム分は数えるなよ。
05195152013/04/01(月) 20:47:01.97
>>517
つまり、予め文字テクスチャに使うイメージを解像度分用意しておくのではなく、
ゲームが立ち上がってからフォント系 API なんかを使って
テクスチャに必要な分だけ文字を描くという事?。
後は、そのテクスチャを使って植字をするようなテキストを描画し、
解像度が切り替わったら、また文字テクスチャを作り直す、と。


>>518
オンラインゲームを作ってる。
ゲーム内で文字をレンダリングする機会は色々あるけど、
一番高頻度になる可能性があるのはチャット機能。

今のところプレーヤーが1行ずつメッセージを送る仕組みになってる。
プレーヤーがコピペ機能を使ってメッセージを書き込みまくれば、
秒間数回は更新されるかも知れん。
(更新頻度の制限を設ける事も検討中)
0520デフォルトの名無しさん2013/04/01(月) 21:19:26.44
秒間数回の更新程度、描き直したところで誤差程の影響しか出ない。
0521デフォルトの名無しさん2013/04/01(月) 21:23:42.55
文字の描画で重くなると言う話はその昔、必要も無いのに毎フレーム全部描き直していた馬鹿が、
自分が無能なのを理解できずに遅い遅いと騒いでいたせいだ。
必要最低限の内容を更新するだけなら、ハイビジョン動画を再生できるこの時代では何の影響も出ない。
05225152013/04/01(月) 21:25:34.09
>>520
ということは、文字を描画するタイミングで、
リアルタイムにグリフを描くわけか。

なるほど、やってみるよ。

ありがと。
05235152013/04/01(月) 21:27:34.63
>>521
更新せずレスしてしまった。

> 必要最低限の内容を更新するだけなら、ハイビジョン動画を再生できるこの時代では何の影響も出ない。

わかった、ありがと。

でも、必要以上に嫌みっぽいレスは正直嫌いだ
0524デフォルトの名無しさん2013/04/02(火) 20:55:02.29
3Dって基本全部書き直しじゃないの?
0525デフォルトの名無しさん2013/04/02(火) 21:04:54.78
テクスチャの事だろ
0526デフォルトの名無しさん2013/04/04(木) 19:21:24.65
IE11にWebGLが実装されているという噂情報が出てきたな。
ワクテカ。
0527デフォルトの名無しさん2013/04/05(金) 19:25:01.82
DirectX終了のお知らせ
0528デフォルトの名無しさん2013/04/05(金) 19:30:23.53
そして発表されるWebX
0529デフォルトの名無しさん2013/04/06(土) 02:15:57.23
あるある
0530デフォルトの名無しさん2013/04/06(土) 10:37:36.64
MS-ガンダムX
0531デフォルトの名無しさん2013/04/06(土) 12:06:34.50
>>528
IEのみ対応ですね
0532デフォルトの名無しさん2013/04/06(土) 13:07:19.08
DirectXは既に終了してるよ。
これからはOpenGLの時代だよ。
0533デフォルトの名無しさん2013/04/06(土) 17:14:40.61
IE11のWebGLでちょっと気になるのが、
使えるシェーダーのデフォルトがIESL(HLSLの制限バージョン)になっているらしいという点。
レジストリの変更でGLSLも有効にできるらしいが、どうなることやら。
デフォルトがIESLだったら大ブーイングだろうな。
0534デフォルトの名無しさん2013/04/06(土) 20:04:00.31
>>532
OpenGL+何かとDirextXを比較するなら分かるがカバーするレイヤが違うから
0535デフォルトの名無しさん2013/04/06(土) 20:07:24.92
コンシューマ向けゲームとかでもシーン切り替え時にゲームディスクガリガリやってasset読み込みんでのに開きっぱでいいおね?とか
0536デフォルトの名無しさん2013/04/06(土) 20:32:04.07
きみは何言ってんのかね?
0537デフォルトの名無しさん2013/04/06(土) 21:55:58.88
OpenGLやめてCloseGLにしろって事では?
0538デフォルトの名無しさん2013/04/06(土) 23:11:52.61
それってMSのあれか
0539デフォルトの名無しさん2013/04/07(日) 00:50:19.75
Girls' LoveならOpenだと個人的には興醒めだね

どうせMSが独自規格に走ろうと上位のレイヤが隠蔽するよ
出来ること出来ないことの多くはハードウェアで決まっちゃうんだし
0540デフォルトの名無しさん2013/04/07(日) 12:36:16.81
GPUの最新機能はまずOpenGLから使えるようになるんだし
0541デフォルトの名無しさん2013/04/07(日) 15:06:28.77
たとえばジオメトリシェーダがサポートされたのが、
Direct3D10で2007年、OpenGL3.xが2008年。
どう見ても後追いなんだが。
0542デフォルトの名無しさん2013/04/07(日) 15:19:19.81
その前にベンダー独自の拡張機能でやってなかったっけ
よく憶えてないけど

少なくとも Direct3D では独自の拡張機能は作れん
0543デフォルトの名無しさん2013/04/07(日) 15:28:58.98
知りもしないくせに、知ったかするな。
0544デフォルトの名無しさん2013/04/07(日) 16:28:52.69
独自拡張を許したらAPIとして統一する意味がなくなる。
0545デフォルトの名無しさん2013/04/07(日) 18:27:07.93
nVidiaでもATIでも独自拡張はあるけどな
その中で、これは良いと認められたものがクロノスによって統合される
0546デフォルトの名無しさん2013/04/07(日) 18:42:13.82
複数バージョンのAPIが同時に利用されてる状況は
メーカー独自拡張があるのとどう違うんだって話
結局統一なんてできないんだから
だったらメーカー独自拡張自由に追加できるようにしたほうが良い
0547デフォルトの名無しさん2013/04/07(日) 18:52:50.37
>>543
すまん、実は全く知らん
0548デフォルトの名無しさん2013/04/07(日) 19:19:21.81
>>541
OpenGLがDirectXの機能を部分的に追い越してきたのは、
ごくつい最近の話だからね。
それまでは確かに後追いだった。
最近は状況の変化が特に激しいから、今後の情勢は予測しづらいな。
0549デフォルトの名無しさん2013/04/07(日) 19:54:13.08
俺の知ってるOpenGLはグラボメーカーにまったく相手にされてなかったのに時代は変わったな
OpenGLは隠れ家的な安らぎがあった
メジャーなOpenGLなんてOpenGLじゃないただの産業廃棄物だ
0550デフォルトの名無しさん2013/04/07(日) 20:58:35.42
自分がOpenGLを使い始めた頃はOnyx REとかIndigo2の時代だったけど、当時そういった
SiliconGraphicsのグラフィックスワークステーションの中でバリバリ活躍していたMIPSも
気がつけばモバイルGPUのPowerVRの会社に買われたと知ったときは流石に遠い目になった。
0551デフォルトの名無しさん2013/04/07(日) 21:24:35.20
>>549
あぁわかる

たとえば、自分だけが知ってる超マイナーなはずだった歌手が、
ここのところバラエティに出たり紅白出ちゃったりした時の心境だろ
0552デフォルトの名無しさん2013/04/07(日) 23:38:14.37
きみらは一体何の話をしてるんだ???
0553デフォルトの名無しさん2013/04/08(月) 00:21:15.38
D3Dみたいにヴァージョン変わったら同時にインターフェースも変わった方が、
その世代にあった使い方を強制してくれるからいいと思うけどね。
0554デフォルトの名無しさん2013/04/08(月) 00:56:15.96
互換性って経済を停滞させるよな
0555デフォルトの名無しさん2013/04/08(月) 17:55:19.44
>>553
DirectXが廃れた原因の一つがそれ。
ユーザーがついていけなくなる可能性大。
今のやり方でいいよ。
0556デフォルトの名無しさん2013/04/08(月) 22:28:01.04
>>555
固定パイプラインがなくすような改悪ついていけないんだが…
0557デフォルトの名無しさん2013/04/08(月) 22:38:12.03
根性でついてこい
0558デフォルトの名無しさん2013/04/08(月) 23:08:51.20
全てのグラボがシェーダ対応してるわけじゃないんでしょう?
互換性のないプログラムになるじゃん
何も表示されませんでしたって言われた場合にサポート大変じゃん
0559デフォルトの名無しさん2013/04/08(月) 23:41:56.14
ガチで業務で使ったりしてるわけじゃないから教えて欲しいんだけど、互換性の無いプログラムになるってのはどういうこと?
いまどきのグラボでも固定機能が残ってるバージョンのOpenGLが使えないわけじゃないんだから、それを使えばOKと素人考えでは思うのだけども。
3.0以降のGLの機能使いつつ、シェーダを使ってリッチな表示をしたいが、あんまりコードの変更なしに古いOpenGLにも対応させたい、みたいな場合に
コストが余計にかかるってこと?
固定機能使ったコードを3.0以降に対応させるのは大変ってのはわかるけど、それはちょっと違う問題だよね。
固定機能をなくす改悪がついていけないってよりは、3.0まで対応してないグラボ以外を排除するかどうかところで決まってくるかと思うんだが。
0560デフォルトの名無しさん2013/04/09(火) 00:27:33.03
完全に排除されるまではリスクが大きいくて使えないって事
お金のない研究室ではWin95/NT機とか1.1しか使えないとこもまだまだ現役だし
ネジとか工業製品の3次元形状を表示するだけなら固定パイプラインで十分
古いPCを全部爆破出来ればいいのだけど
0561デフォルトの名無しさん2013/04/09(火) 00:38:53.75
それならどのみち今のOpenGLに固定機能がついてたって、新しいOpenGLは使えないんじゃなくて?
固定機能があるかどうかは本質ではないじゃん。
0562デフォルトの名無しさん2013/04/09(火) 00:52:23.74
何言いたいのかよくわからないけど
あえてサポートする必要がある古い環境を切り捨てて
新しい機能使うなんて本末転倒もいいとこ
1.1は固定機能のみでシェーダ対応してないのは知らないのかな
0563デフォルトの名無しさん2013/04/09(火) 01:19:29.70
いや、それは知ってる。
自分が言いたいのは、新しいOpenGLが使えない理由は、
固定機能がなくなったという改悪が起こったからではなくて、新しいOpenGLに対応してない環境があって、それをサポートしないといけないからでしょ?ってこと。
仮にOpenGL3.0以降で固定機能がなくなるような「改悪」がなかったとしても、OpenGL1.1の環境をサポートしなくちゃならないならどっちみちOpenGL3.0は使えず、
OpenGL1.1でプログラムを書かないといけないよね。それは固定機能の有無とは関係ないということ。
0564デフォルトの名無しさん2013/04/09(火) 01:32:23.63
そうだね、固定機能を1.1とセットで考えるかどうかの違いだね
0565デフォルトの名無しさん2013/04/09(火) 02:05:48.95
まあ、固定機能がなくなったってこと自体には面食らったのは同意だけどね。てか、固定機能なくなったのは3.1か。
入門が大変になったなあ、とは思う。まあ、3.1以降の対応が必要になったら考えればいいだけの話だけどね。
多分、3.1以降の機能使いたくなるほど複雑なことやってたら、固定機能の代わりのものを用意するのは手間がかかるだけでそう難しくないことだとはおもうけど。

自分の場合は、iOSでOpenGL ES2.0を触らなくちゃいけなくなって、固定機能はないわ、gl_PointSizeを自前でちゃんと設定しないと点も描画できないわ、
glBeginは使えないわで覚えることがいきなりたくさんあったので、ちょっと敷居高いな、と思った。固定機能程度のことをするのは、ちょっと試行錯誤したら
できるようにはなったんだけどさ。
0566デフォルトの名無しさん2013/04/09(火) 07:06:08.37
とっくにサポートが切れたセキュリティーホール空きっぱなしのOSをサポートするのは害悪を広めるだけ。
0567デフォルトの名無しさん2013/04/09(火) 09:11:30.48
>>559-560
北朝鮮に期待するしかあるまい
0568デフォルトの名無しさん2013/04/14(日) 09:21:34.25
かなりの初心者なんですが少しだけ質問させて下さい。

openGL(ES)でフォグの機能を使ってるんですが
カメラからの各種オブジェクトの相対的な位置で
フォグのかかり具合が決まるのではなく
オブジェクトの座標の値でのみかかり具合が決まってしまってるのですが
これをカメラからのオブジェクトの相対位置で
かかり具合が決定されるようにするにはどうしたらいいんでしょうか?

現在だと例えば、カメラとオブジェクトのz座標を同時に動かして
カメラに密着させていても、オブジェクトにフォグがかかり
不自然な状態になってしまっています。

何か設定用の関数がありますか?
0569デフォルトの名無しさん2013/04/14(日) 13:45:42.28
シェーダ使って自分でやるのが一番確実。
0570デフォルトの名無しさん2013/04/14(日) 13:50:09.85
「どのおにぎりがいいかなかあ」
「パンにしなよ」
0571デフォルトの名無しさん2013/04/14(日) 14:04:41.04
>>568
そもそも、フォグはどうやって設定しているの?
カメラなどはどうやって設定しているの?

そういった事が分からないと、何が間違っているのか分からない。
0572─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/14(日) 14:10:48.83
>>568
>現在だと例えば、カメラとオブジェクトのz座標を同時に動かして
>カメラに密着させていても、オブジェクトにフォグがかかり

距離が同じならフォグのかかり具合も同じだろw

頭がアレなのか?
0573デフォルトの名無しさん2013/04/14(日) 15:48:37.04
>>572
質問は、カメラ空間ではなくワールド空間でフォグがかかるように見える
と言いたいのではないか?

カメラにオブジェクトを密着した状態で両者を同時に動かせば、
普通ならフォグはかからない、あるいはほんのわずかしかかからないはず。
にもかかわらずオブジェクトにフォグがかかるように見える、ということかと。

頭がアレなのかどうかは知らんが。
0574─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/14(日) 16:07:32.79
>>573
スクリーンショット見ないと分からないな。
0575デフォルトの名無しさん2013/04/14(日) 16:10:52.41
>>573
その通りです!

他人のライブラリを使って間接的にopenGLを使ってるので
どうにかソースを調べて問題の箇所を直すしかないですね…

調べてたら↓みたいなページに行き着きました。
ttp://asai-atsushi.blog.so-net.ne.jp/2012-04-16
続けてライブラリのソースも調べてみたいと思いますが
このような問題だとするとこれはどういう問題なのでしょうか?
0576デフォルトの名無しさん2013/04/14(日) 16:39:43.28
ステートじゃねえの
0577デフォルトの名無しさん2013/04/14(日) 16:57:38.11
>>576
なんというかその時の設定状態で
上手くカメラの座標が反映されてないという事なのでしょうか?
0578デフォルトの名無しさん2013/04/14(日) 17:10:32.99
ワールド空間でフォグがかかると決まっているのであれば
カメラを固定してオブジェクトのみを動かすというバッドノウハウも
0579デフォルトの名無しさん2013/04/14(日) 17:15:00.63
>>578
そうですね。
出現するオブジェクトの数は少ないので
どうしても分からない場合はそうしようと思います。
0580デフォルトの名無しさん2013/04/14(日) 17:47:41.59
>>577
lookat指定とfog指定の順番が違うとか
初学者はしょうもないとこでミスってることが多いから
質問するときはソース出さないとなんとも言えない

次スレのテンプレで質問する場合は必要最低限のコード提示必須って書こうぜ
0581デフォルトの名無しさん2013/04/14(日) 18:03:06.53
>>580
ソース出したいんですが殆どメインの部分は
ライブラリのコードで膨大にあるし
全体像がよくつかめてないまま弄ってることもあって
ちょっと直ぐには無理っぽいですね…

もうちょっと自分で頑張ってみます。
0582─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/14(日) 19:53:04.74
>>581
おまえバカかw

そんなの自分でさっさとやれw
0583デフォルトの名無しさん2013/04/14(日) 19:59:14.94
とりあえず人のコードあんま弄ると
変な不具合出るとやなので
>>578のやり方で今回はガマンすることにしました。
お騒がせしました!
0584─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/14(日) 20:35:32.35
すげーバカw
0585デフォルトの名無しさん2013/04/14(日) 20:36:13.37
↑こいつ誰?
0586─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/14(日) 20:38:15.54
会社の業務をここで聞くのはアウトだぞw
0587デフォルトの名無しさん2013/04/14(日) 20:53:20.47
無能はコンソール研究所(笑)にでも引きこもってろ
0588─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/14(日) 21:05:04.15
宿題聞いたり業務聞いたり大忙しだなw

2chなくなったら日本終了かもな(ゲラゲラ
0589デフォルトの名無しさん2013/04/14(日) 21:24:47.48
>>586
すまん、3年前にこの板で訊いた質問の答えをそのままプログラムにしたものが、
今も日本インフラを支えている。
0590─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG 2013/04/14(日) 21:28:48.34
>>589
俺の回答を期待してるんだったら、それはやめた方がいいだろうなw
0591デフォルトの名無しさん2013/04/14(日) 21:33:04.62
折角コテ付けてるんだから、男は黙ってNG
0592デフォルトの名無しさん2013/04/14(日) 21:39:22.21
Pacific Graphics 2011 の論文「Interactive Indirect Illumination Using Voxel-Based Cone Tracing」のボクセライズでは、なぜOpenGLのデプステストをDisableにしているんですか?
0593デフォルトの名無しさん2013/04/28(日) 01:13:41.08
教えてください、GLFW って何の略称なんでしょうか?
サイトやマニュアルをサラっと見ても分かりませんでした・・・
0594デフォルトの名無しさん2013/04/28(日) 10:16:55.89
なぜ略称にそこまで拘るのか
0595デフォルトの名無しさん2013/04/28(日) 11:31:55.51
GL FrameWorkじゃねーの
0596デフォルトの名無しさん2013/04/28(日) 11:35:16.36
FireWall
0597デフォルトの名無しさん2013/04/28(日) 12:22:54.54
ハカーがレンダリングの邪魔するんですね
0598デフォルトの名無しさん2013/04/28(日) 12:32:24.67
fool wonder
0599デフォルトの名無しさん2013/04/28(日) 21:57:00.89
God Level Fantasy World!!!!
0600デフォルトの名無しさん2013/04/30(火) 02:54:33.88
main(){
Display(){
f1(){
while(1){
特定キーが入力されるまで待ち状態
それ以外はキーに応じて画面が変化}
f2(){
while(1){
特定キーが入力されるまで待ち状態
それ以外はキーに応じて画面が変化}
}}}
各f()内で無限ループを使わなければキー入力を受け付けるんですが,
無限ループの際に入力待ちをすることでキー入力を受け付けるようにはできないのでしょうか?
0601デフォルトの名無しさん2013/04/30(火) 03:22:19.03
スレッドを分ける
0602デフォルトの名無しさん2013/04/30(火) 12:05:50.16
つーか、状態管理すればいいだけじゃないの?
0603デフォルトの名無しさん2013/04/30(火) 20:35:55.77
>>601 >>602
ありがとうございます.
スレッドに関して調べてやってみます.
おすすめのページがあれば教えてくださいm(_ _)m
0604デフォルトの名無しさん2013/04/30(火) 23:13:20.85
>>603
安易にスレッドを使えばいいってもんじゃない。
この場合は状態遷移で対応すべし。
0605デフォルトの名無しさん2013/05/01(水) 01:15:21.81
>>604
whileをなくし,mainの無限ループのみを用い,switchと併用して,
キー入力後に描画へ遷移するように実装しましたm(_ _)m
0606デフォルトの名無しさん2013/05/03(金) 19:01:42.09
>>314
Nvidia driver306.97 だと固定機能のV(glVertex3f, GL_VERTEX_ARRAY)が layout(binding=0) につながってるんだな。glutSolidCubeがシェーダで出力されたわ
ちなみに CCC12.10 だと GL_INVALID_OPERATION が出た
06076062013/05/03(金) 21:17:14.73
× layout(binding=0)
○ layout(location=0)
0608デフォルトの名無しさん2013/05/16(木) 10:35:52.73
3Dプリンタの出力ってどうすんの?
0609デフォルトの名無しさん2013/05/16(木) 11:10:24.79
スレチ
0610デフォルトの名無しさん2013/05/18(土) 14:22:42.00
OpenGL ES 2.0でテクスチャのアルファが0の部分を抜いて
描画したい場合、一般的にどうするものなのでしょうか?

以前は固定機能のアルファテスト(GL_ALPHA_TEST)で
色を抜いていたんですが、ES 2.0では固定機能もなくなったので、
代わりにシェーダのdiscardで抜いてみるとやたら遅く…。

チップ(PowerVR)の開発者向けサイトにあった
パフォーマンスに関する資料にもdiscardは大幅な速度低下を
引き起こすので極力使うのを避けた方がよい、という記述がありました。
06116102013/05/18(土) 14:25:15.86
アルファブレンド(GL_BLEND)の方で描画すると、アルファが0の部分の
デプス値も更新されてしまい、重ねあわせの問題が出て来てしまいます。
描画順を入れ替えて奥から順番に描画すればこの問題も回避出来ますが、
他に良い方法があるのではないかと思い、質問させてもらいました。
0612デフォルトの名無しさん2013/05/18(土) 20:07:05.04
glAlphaFunc
0613デフォルトの名無しさん2013/05/18(土) 20:49:21.99
>>612
ES2でどうやって使うのか答えてみろよ、無能。
0614デフォルトの名無しさん2013/05/18(土) 21:06:58.56
なんで喧嘩腰なの?
0615デフォルトの名無しさん2013/05/18(土) 21:17:51.02
mixでは使い物にならないくらい遅いって事かな?
0616デフォルトの名無しさん2013/05/18(土) 22:10:34.85
alpha to coverage使えるならそれで
ダメなら奥から描画するしかないね仕方ないね
0617デフォルトの名無しさん2013/05/19(日) 09:49:40.43
OpenGL ES2 スレ独立させた方がいいね
0618デフォルトの名無しさん2013/05/19(日) 15:02:22.88
C++でゲーム作ってて、今までDXライブラリに丸投げしてたんだけど、
OpneGLに移るのにSDLとGLFWだったらどっちが馴染みやすいかな?
OpenSceneGraphもちょっと気になる。QtはAndroidみたいで窮屈だね
0619デフォルトの名無しさん2013/05/19(日) 16:40:13.12
そもそも無駄にライブラリを使うという発想を、
軌道修正するところから始めた方がいい。
本当は必要ないのに使わなければならないという固定観念に縛られていないか?
06206102013/05/19(日) 16:44:40.99
皆様レスどうもありがとうございます。

>>612
残念ながらAlphaFuncはES2.0では無くなっているようです。

>>615
済みません、mixというのがよく分かりませんが
discard入れるだけで最大3倍くらい遅くなっていました。

>>616
alpha to coverageですか。
情報ありがとうございます。調べてみます。
0621デフォルトの名無しさん2013/05/19(日) 17:34:51.36
形状の変化や位置の移動が少ないのなら、
専用のステンシルバッファを作って、
以降それでマスクすればいい。
0622デフォルトの名無しさん2013/05/19(日) 17:46:25.76
gl_FragDepth で -1 とか返せば
06236102013/05/19(日) 18:19:05.76
情報どうもありがとうございます。

>>621
確かにステンシルという手もありますね。
テクスチャ毎のステンシルバッファ作成が少しネックですが・・・。

>>622
gl_FragDepthは使った事がありませんでした。
なるほど、アルファが0のフラグメントのデプスを書き換えれば
デプステストで抜けるという事ですね。今度試してみます。
0624デフォルトの名無しさん2013/05/20(月) 21:15:30.82
ES2じゃgl_FragDepthは使えないでしょ
0625デフォルトの名無しさん2013/05/20(月) 23:35:15.96
射影変換して表示したテクスチャの、実際のウィンドウ上の座標を調べる方法はあるでしょうか?

たとえば、500×500の画面に、500×500の四角を表示するとします。
最初は{0, 0}〜{500,500}ですが、zの値を変えていくと
ウィンドウ内に実際に書かれている四角は{25,25}〜{475,475}、{100,100}〜{400,400}……と、
だんだん小さくなっていきますよね。
この変換後の座標を調べる方法があったら、教えていただけないでしょうか。
0626デフォルトの名無しさん2013/05/21(火) 00:21:01.97
GLU使っていいならgluProject()
ダメならオブジェクト座標から順番に座標変換してってウィンドウ座標求める。
座標変換の仕方はググるか親切な>>626に教えてもらってね☆
0627デフォルトの名無しさん2013/05/21(火) 00:31:20.34
次の人指すつもりが自分指してしまった・・・アホスw
という訳で簡単に書くと、オブジェクト座標にModelviewMatrixかけて
ProjectionMatrixかけてwで割ってビューポート変換すればウィンドウ座標になる・・・はず。
0628デフォルトの名無しさん2013/05/21(火) 00:58:11.28
なんて優しい>>626>>627
0629デフォルトの名無しさん2013/05/21(火) 03:35:33.39
http://www.songho.ca/opengl/gl_transform.html
ここら辺読むと良いよ
0630デフォルトの名無しさん2013/05/21(火) 07:05:43.93
フラグメントシェーダでとれるから、
マルチレンダリングして必要な情報をとれば無駄が発生しない。
06316252013/05/21(火) 17:10:21.02
みなさん親切にありがとうございます!
リンクアドレスは開いた瞬間くらっときてしまいましたが、
がんばって読んでみます。
ありがとうございました。
0632デフォルトの名無しさん2013/05/22(水) 12:10:22.79
すいません、質問させてください。

隠面消去が失敗する原因てどんなものが考えられますか?


・GL_DEPTH_TESTは有効化した
・デプスバッファはglFramebufferRenderbufferに渡した
・glRenderbufferStorageの際のwidth, heightも正しい
・カリングはオフにした
・glClearの際にデプスバッファもクリアしている

という状態で、失敗する理由がこれ以上思い当たりません。
なにとぞよろしくお願いします。
0633デフォルトの名無しさん2013/05/22(水) 12:16:08.69
単純に行列が狂ってるんじゃね。
0634デフォルトの名無しさん2013/05/22(水) 12:16:40.18
何をもって失敗と言っているのか不明
0635デフォルトの名無しさん2013/05/22(水) 14:29:17.38
奥から描いてない
右回り左回りを混ぜてる
0636デフォルトの名無しさん2013/05/22(水) 21:39:55.62
glRenderbufferStorageのinternalformatに対応していないformat渡してるとか。
glCheckFramebufferStatusでGL_FRAMEBUFFER_COMPLETEがちゃんと帰って来てる?
0637デフォルトの名無しさん2013/05/23(木) 12:50:34.36
>>632です。
632の時点では、z座標を無視して描画した順に上書きされてしまう問題が出ていました。
これは単純ミスでした。(depthバッファを渡すところでcolorバッファを渡していました)
しかし、このミスを直したところ今度は何も表示されなくなりました。
glCheckFramebufferStatusは問題ないようなのですが。
右回り左回りというのを調べてみます。
0638デフォルトの名無しさん2013/05/23(木) 13:18:38.06
カリングがオフなら関係ない希ガス
0639デフォルトの名無しさん2013/05/23(木) 13:20:47.33
コードはこんな感じですが、どこかおかしいところはあるでしょうか。
{
glGenFramebuffers( 1, &framebuff );
glBindFramebuffer( GL_FRAMEBUFFER, framebuff );
}
{
glGenRenderbuffers( 1, &colorbuff );
glBindRenderbuffer( GL_RENDERBUFFER, colorbuff );
}
{
[ self.mpGLContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:( CAEAGLLayer* )self.layer ];
glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, colorbuff );
}
{
GLint framebufferWidth, framebufferHeight;
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &framebufferWidth);
glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &framebufferHeight);

glGenRenderbuffers( 1, &depthbuff );
glBindRenderbuffer( GL_RENDERBUFFER, depthbuff );
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, framebufferWidth, framebufferHeight);

glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthbuff );
//glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthbuff );
}
if ( glCheckFramebufferStatus( GL_FRAMEBUFFER ) != GL_FRAMEBUFFER_COMPLETE ) ( 省略 )
0640デフォルトの名無しさん2013/05/23(木) 13:22:26.34
大抵のバグは本人が関係ないと思って省略している部分にあったりする。
0641デフォルトの名無しさん2013/05/23(木) 17:28:25.26
今度は何も表示されなくなりました(笑)

表示できるようになってからまたおいで
0642デフォルトの名無しさん2013/05/23(木) 17:44:30.13
>>640
省略したところはただのデバッグ文です。
文字数が多すぎて書き込めなかったので。

デプスバッファを有効にしなければ普通に表示されます。
サンプルのプロジェクトでデプスバッファを有効にして動いているものがあり、
それのバッファ設定の箇所をそのまま持ってきても動かなくなるので、
どこかほかの場所に原因があるようです。
ほかに原因になりそうなところが思い当たらないんですが……

右回り左回りというのは、関係なかったみたいです。
0643デフォルトの名無しさん2013/05/23(木) 17:57:09.92
> glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, framebufferWidth, framebufferHeight);

GL_DEPTH_COMPONENT32 にしてみたら
0644デフォルトの名無しさん2013/06/02(日) 18:12:43.44
glPush〜Popのような機構って自分で作るのもけっこう簡単そうなんですけど、
わざわざ機能としてあるってことは、最適化されてるとかそういうのでしょうか?
それともただ単に、Cだとスタック作るのがちょっとめんどくさいから用意してくれてるんでしょうか
0645デフォルトの名無しさん2013/06/02(日) 19:17:49.81
glTranslatef とかだって glPush〜Pop 以上に自分で作るのは簡単なのに存在する。

たぶん、最適化どうのこうのより、その API を作るにあたって基にした
3D オブジェクトを扱う考え方や思想が反映されているのだと思う。
0646デフォルトの名無しさん2013/06/02(日) 21:21:51.74
旧世代の関数の話を未だに持ち出す奴って、
この10年いったい何をして生きてきたんだろう?
0647デフォルトの名無しさん2013/06/02(日) 21:38:59.81
固定機能シェーダーなどいろいろ旧世代の関数が廃止された OpenGL 3.x 以降の入門書ってなんで無いんだろ
0648デフォルトの名無しさん2013/06/03(月) 19:47:19.84
ただのマスターベーションだからですよ
0649デフォルトの名無しさん2013/06/03(月) 20:59:26.18
シェーダなんて書けましぇーんだ!
0650デフォルトの名無しさん2013/06/03(月) 21:39:51.68
シェーダーもそうだけど、頂点データの扱いも OpenGL 3.x 辺りで大きく変わったじゃん

入門書書いて金稼いでる奴らにとってはネタの宝庫だと思うんだがなぁ
0651デフォルトの名無しさん2013/06/03(月) 22:15:45.21
今、技術系の書籍を出したって売れやしない。
0652デフォルトの名無しさん2013/06/03(月) 23:55:25.86
もう需要もESの方しかないしね。
そうなるとOpenGL本ではなく、スマートフォンのプログラム本になる。
で、現在に至る。
0653デフォルトの名無しさん2013/06/04(火) 02:18:54.29
シェーダ使ってもろくな物つくらないから、仕方ないね
0654デフォルトの名無しさん2013/06/04(火) 07:01:59.62
でもなんか、OpenGLとOpenGL ESが統合されるんじゃないかって噂が一部で出てるじゃない?
モバイルGPUも性能が高くなって、これからはフルOpenGLを実装できるようになってきたかららしいけど。
0655デフォルトの名無しさん2013/06/04(火) 21:17:50.51
モバイルのビデオチップの性能がPCと同レベルになっている現在、
ESの存在価値はほとんど無くなってしまった。
すでにCore2時代のIntelのオンボードレベルなら超えてしまっている。
0656デフォルトの名無しさん2013/06/05(水) 00:12:24.52
同じにはならんよ
モバイルには固定パイプラインは実装されないだろうし
0657デフォルトの名無しさん2013/06/05(水) 07:02:35.49
ES1で固定機能は使えるが、いったい何を言ってるんだ?
0658デフォルトの名無しさん2013/06/06(木) 06:38:22.04
>>656
かもね。だから、いわゆる固定機能を除いたCore Profileだけの実装になるかもしれない。
それでもESでないOpenGLがモバイルに載る事を期待しちゃう俺ガイル。
あとWebGLもそうなってほしい。
0659デフォルトの名無しさん2013/06/06(木) 07:05:13.22
上位互換の問題があるから外せないよ。
本当にどうしようも無い馬鹿だな。
0660デフォルトの名無しさん2013/06/06(木) 07:08:34.07
>モバイルには固定パイプラインは実装されないだろうし
もう恥ずかしいから、恥の上塗りはやめた方がいいぞ。
0661デフォルトの名無しさん2013/06/07(金) 03:02:46.29
固定パイプラインが互換上 ES1としてサポートされつづけるにしても、
ハードウェアの実装(トランジスタ)としてはない、という意味でいいたかったんじゃまいか。
フットプリントやコストのかねあいから、モバイルではシェーダーハードウェアで固定パイプラインを模擬している気がするけど、どうなん?
ごめん。詳しくないから想像で言ってるが。
0662デフォルトの名無しさん2013/06/07(金) 07:08:39.42
擬似的にでもサポートされれば、統合に何の支障も無いだろう。
PCのビデオカードたって同じような状態なんだし。
結局のところ「同じにはならんよ」という意味が全く不明。
0663デフォルトの名無しさん2013/06/08(土) 01:09:22.30
モバイルだろうとPCだろうと「固定」パイプラインといっても現状のGPUは全部プログラマブルシェーダー上で実行しているだろう。
0664デフォルトの名無しさん2013/06/08(土) 05:24:02.71
何を勘違いしてるのか知らんが
OpenGL ES 2.0には固定パイプラインは存在しない
シェーダパイプラインしかない
0665デフォルトの名無しさん2013/06/08(土) 07:06:08.40
>>664
ES1では固定機能が使えるから、固定機能が理由で統合に支障が出ることはあり得ないという話をしているのに、
突然ES2の話を始めるとは、とんでもないアスペルガーだな。
リアルでも周りから、突然何を言っているんだこいつという反応を返されることが多いだろう。
0666デフォルトの名無しさん2013/06/08(土) 07:21:55.76
おまえらってほんとどうでもいいことで喧嘩始めるよな
0667デフォルトの名無しさん2013/06/08(土) 13:26:34.93
固定機能が理由で統合に支障が出るなんて誰が言ってるんだよw
突然何を言ってるんだ?

OpenGLは既に固定パイプラインは必須機能ではなくなっているから
同様に固定パイプラインを廃したOpenGL ES2.0以降とは統合しやすいに決まってるだろ

OpenGL 3.1以降でも固定パイプライン必須だったらモバイルはGLESのままだっただろうな
0668デフォルトの名無しさん2013/06/08(土) 14:00:32.62
必須だろうが無かろうが、統合に固定云々なんて何の関係も無い。

>OpenGL 3.1以降でも固定パイプライン必須だったらモバイルはGLESのままだっただろうな
いまだにESのままなんだが、いったい何の話をしているんだ?

統合の話もこれからされるかもしれないと言うだけで、
現時点で統合が明確になっているわけでも何でも無いんだが、
どれだけ知ったかぶりをすれば気が済むんだ?
0669デフォルトの名無しさん2013/06/08(土) 14:05:25.41
>>656が知ったかで馬鹿なことを書き込むからこういう流れになるんだよ。
知らないなら余計なことを言わなければいいのに。
0670デフォルトの名無しさん2013/06/08(土) 15:49:49.01
自己紹介乙
0671デフォルトの名無しさん2013/06/08(土) 17:41:47.00
じゃあ
>モバイルには固定パイプラインは実装されないだろうし
これの弁解を聞こうか。
知ったか以外になにかあるんだろう?
0672デフォルトの名無しさん2013/06/08(土) 18:00:01.13
あとはこれ
>OpenGL 3.1以降でも固定パイプライン必須だったらモバイルはGLESのままだっただろうな
未だに統合されたわけでも何でも無いのに、いつの間にか「ESのまま」が過去形にされている謎のセリフ。
未来人じゃなければ、ただの知ったかだ。
0673デフォルトの名無しさん2013/06/08(土) 18:08:24.20
話の流れはよく分からんが、それは単なる仮定法過去じゃないのか
0674デフォルトの名無しさん2013/06/08(土) 18:25:16.10
そうすると突然妄想を垂れ流すアスペルガーということになるが。
0675デフォルトの名無しさん2013/06/08(土) 18:47:00.70
なんか、そこまでいちいち追及するほど面白いネタでもない気がするんだが。
スルーしてやれよ。
0676デフォルトの名無しさん2013/06/08(土) 18:55:20.30
ぷぎゃーm9
0677デフォルトの名無しさん2013/06/08(土) 19:19:04.11
統合されても性能差がなくなる訳じゃないだろうから
プログラム書く側からしてみればあんまり関係ないな
0678デフォルトの名無しさん2013/06/08(土) 21:21:13.59
えー、最近になって解説サイトみながらシコシコ勉強始めたんだけど
日本語サイトはほとんどver2.0? っぽい固定機能だぜぇ。

なんだろう、悔しいけど新しい参考書買って勉強したほうがええんかな。
でも正直シェーダプログラムとかあまり理解できる気がしないから、
どうせ他人が作ったシェーダのライブラリみたいなの使っちゃいそうなものだが・・・
0679デフォルトの名無しさん2013/06/08(土) 21:28:26.85
Direct3Dの書籍が多いから、そちらをやってからOpenGLに入った方が楽。
シェーダの命令自体は書き方が多少違うだけでほとんど同じだから。
0680デフォルトの名無しさん2013/06/08(土) 21:30:13.28
ESは3になってもジオメトリシェーダ導入されないと知って落胆した。
0681デフォルトの名無しさん2013/06/08(土) 21:42:56.37
ここ半年で出たAndroid機だと、HD解像度でフレーム2万ポリゴン越えの描画しても、
余裕で60FPSとか出せるので侮れない。
0682デフォルトの名無しさん2013/06/08(土) 22:07:36.90
ひまわりの本の日本語版格安で売られてるから買えよ
0683デフォルトの名無しさん2013/06/09(日) 13:18:22.12
固定機能の方で基本がしっかりしているのなら、
WEBの情報があればシェーダを使うのに入門書なんて不要。

結局、意味も分からず他人の用意した数学ライブラリで演算して、
どこに表示されるのかもよく分からずにビューを作って、
描画までの流れも分からずにプログラムを作るから何も身につかないんだよ。

そういう人間は入門書なんて見ても無駄。
下手に入門書の書き方をマネすると、それ以外の書き方を一切考えなくなって、
一切応用が利かなくなる。
0684デフォルトの名無しさん2013/06/09(日) 13:38:07.19
物理的な本の形でまとまっている、という状態が良いと感じる人も少なくないよ。

固定機能の方で基本がしっかりしていなければシェーダー入門書なんて見ても無駄というのは、
俺も経験して身にしみているので同意だけどね。
0685デフォルトの名無しさん2013/06/09(日) 21:34:59.02
固定機能の知識なんていらねえ
最初からシェーダで良い
時間の無駄だ
ttp://www.arcsynthesis.org/gltut/
0686デフォルトの名無しさん2013/06/09(日) 21:52:01.55
時間はたっぷりあるだろ

仕事でやってるわけでもあるまい
0687デフォルトの名無しさん2013/06/09(日) 22:02:45.77
glutを使うのは駄目パターンの典型。
0688デフォルトの名無しさん2013/06/10(月) 02:45:59.68
雰囲気掴むだけで止めて中身に行けばいいけど、そう流れにくいかもね
0689デフォルトの名無しさん2013/06/14(金) 01:50:58.64
GLFW3で良い
UIスレッドとOpenGLスレッド分離できるようになったぞ
0690デフォルトの名無しさん2013/06/14(金) 02:39:01.52
描画を別スレッドにするってよく聞くけど実際どんな風にやってんの
シーングラフだったらノードをスレッドセーフにしたりすんの?
0691デフォルトの名無しさん2013/06/14(金) 02:46:15.43
並列処理にしないなら特に何も考えなくて良いだろ
0692デフォルトの名無しさん2013/06/15(土) 08:16:45.48
すみません、導入レベルの質問で恐縮なんですが…
環境はwindows7 64bit、VS2010です

当初glutを導入していたのですが、続けてfreeglutを参考サイトにしたがって導入し、ごく単純なウィンドウ表示プログラムを実行しました
そこで、リンカ関係でerrorが発生します。
ヘッダファイルのほうでリンカは自動的に繋がっているはずなのに・・・と試行錯誤していると、glut32.libを加えると無事動きました。
ヘッダは、freeglut.hだけ引いています

freeglut.libまたはglut32.lib、と書かれていますが、これは両方必要なのでしょうか?
0693デフォルトの名無しさん2013/06/15(土) 08:27:55.59
主語端折るな
参考サイトってどこだよ
エラー文も貼れ
上記を守ってYahoo知恵袋でも行ってこい
0694デフォルトの名無しさん2013/06/15(土) 08:36:47.88
参考にしたのはこの辺りのサイトです
ttp://andorelseif.com/IMYGraphics/Wiki/doku.php?id=opengl:installfreeglut
ttp://charmie11.wordpress.com/2012/02/21/freeglut-for-opengl-glsl-visual-studio-2010-on-64bit/

エラー文は以下の通りです
1>GLtest.obj : error LNK2019: 未解決の外部シンボル __imp__glutMainLoop@0 が関数 _main で参照されました。
1>GLtest.obj : error LNK2019: 未解決の外部シンボル __imp__glutDisplayFunc@4 が関数 _main で参照されました。
1>GLtest.obj : error LNK2019: 未解決の外部シンボル __imp____glutInitWithExit@12 が関数 _glutInit_ATEXIT_HACK@8 で参照されました。
1>GLtest.obj : error LNK2019: 未解決の外部シンボル __imp____glutCreateWindowWithExit@8 が関数 _glutCreateWindow_ATEXIT_HACK@4 で参照されました。
1>C:\Users\Hamasaki\Documents\Visual Studio 2010\Projects\GLtest\Debug\GLtest.exe : fatal error LNK1120: 外部参照 4 が未解決です
0695デフォルトの名無しさん2013/06/15(土) 08:55:18.08
どうせlibファイルいれる場所がおかしいとかだろうが

>glut32.libを加えると無事動きました。
なんのどこにどう加えたんだよ

>freeglut.libまたはglut32.lib、と書かれていますが、
どこに何が書かれてるかも分からん

>これは両方必要なのでしょうか
意味不明

日本語からやり直した方が良いよ浜崎さん
0696デフォルトの名無しさん2013/06/15(土) 09:05:30.79
glut32.libを加えたのは、プロパティ→リンカ→入力の追加の依存ファイル、に付け加えた、という意味です

申し訳ありません、freeglut.libまたはglut32.libはhttp://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html#3.2に書かれている記述でした
この記述を見る限りでは、freeglut.libまたはglut32.libのどちらかが必要というように読み取れますが、両方ともリンクコマンドラインに追加する必要があるのでしょうか?
0697デフォルトの名無しさん2013/06/15(土) 10:20:42.33
馬鹿には無理
0698デフォルトの名無しさん2013/06/15(土) 13:06:33.62
>>696
freeglutを使うならglut32.libは必要ない。 freeglut.h をインクルードして freeglut.libをリンクする。
0699デフォルトの名無しさん2013/06/16(日) 21:50:11.19
ヘッダファイルをincludeすれば勝手にかならずリンカに必要なライブラリファイルの名前が伝わるわけではないよ。
#pragma linkとかそういう表記がなければ、自分でリンカの追加の依存ファイルに追加しないとリンクしてもらえない。
0700デフォルトの名無しさん2013/06/16(日) 22:05:05.14
>>699
ところがglut.hや freeglut_std.h の中にpragmaが書いてあったりする
0701デフォルトの名無しさん2013/06/17(月) 00:48:20.07
glut32.libは確かfreeglut_std.hでは引っ張ってなかったな
だからエラー出てるんだろうけど、なんでそれが必要と吐いてんのかは知らね
0702デフォルトの名無しさん2013/06/18(火) 14:25:53.98
>>692です。自己解決いたしました、ご迷惑をおかけしました
0703デフォルトの名無しさん2013/06/18(火) 14:40:33.09
質問文がすでにアレだが
「自己解決した」と書いて原因と解決策を書かないのは
ただレスを無駄に消費する本当のクズだぞ
0704デフォルトの名無しさん2013/06/18(火) 14:53:56.44
64bit用にfreeglut.lib、freeglut.dllを生成した上で、ProgramFile(x86)の方に入れてしまっていたため,freeglut.libを見つけて読み込んでもビルドできなかった、というミスでした
32bit設定で生成しなおして入れなおしたところ、無事動きました

スレ汚し失礼いたしました
0705デフォルトの名無しさん2013/06/18(火) 14:56:11.37
言われたときはピンと来てなかったんだろうが、>>695のどうせ、がそのままだな
0706デフォルトの名無しさん2013/06/20(木) 18:50:27.14
C++で記述されているOpenGLでパーティクルを表示するプログラムが記載されているサイトなどご存知ないでしょうか。
もしご存知のかたがおりましたらそのサイトを教えて下さい。
よろしくお願いします。
0707デフォルトの名無しさん2013/06/20(木) 22:22:23.27
ttps://www.google.co.jp/search?q=opengl+c%2B%2B+particle
0708デフォルトの名無しさん2013/06/22(土) 23:34:21.14
>>707
ありがとうございます。
ただ当方英語がわからずC++の知識及びOpenGLの知識も浅いためソースコードを見ても
理解が追いつかないところが多々あります。
もしよろしければ日本語での解説が有るところを希望しております。
0709デフォルトの名無しさん2013/06/23(日) 01:52:16.31
馬鹿には無理
0710デフォルトの名無しさん2013/06/23(日) 03:04:29.59
ひまわりの本に載ってるが
ttp://www.amazon.co.jp/dp/4862461891
0711デフォルトの名無しさん2013/06/23(日) 03:50:24.60
>>708
じゃあc++とopenglの知識か英語力付けりゃ解決じゃん
原因分かってんだからやれ
0712デフォルトの名無しさん2013/06/23(日) 21:15:54.20
>>711
返信ありがとうございます。
原因はわかっておりますが事情があり1ヶ月〜2ヶ月程度以内にある程度の成果を出す必要性があり、
その時間内ではその3つの知識を習得するのは私の能力では困難だと判断しました。
また、特にopenGLの知識をつけるという点においてサンプルコードを解説付きで読むことができるという
環境は私の考えつく限り最良の方法ですので、やはり私の読める日本語で
サンプルコードが書いてあるところを探すのが最良であると考えました。

重ね重ねにはなりますが、日本語で解説しているサイトなどご存知でしたら教えていただけると幸いです。
0713デフォルトの名無しさん2013/06/23(日) 21:33:25.20
日本語あってもお前にゃ無理
0714デフォルトの名無しさん2013/06/23(日) 23:21:44.25
「パーティクル OpenGL サンプル」
とかでググれば日本語でもいろいろ出てくるだろ
0715デフォルトの名無しさん2013/06/24(月) 22:20:34.48
ひまわりの本に載ってるって書いてあるだろうが
金払いたくないなら諦めろ
0716デフォルトの名無しさん2013/06/24(月) 22:22:35.50
時間ないなら尚更参考書買ったほうがいいわ
0717デフォルトの名無しさん2013/06/24(月) 22:34:44.98
「OpenGLの知識も浅い」というのがどれくらい浅いのか、もう少し具体的にできんかな。

程度によっては、今からGLSLをじっくり学んでひまわりの本のパーティクルを理解することも、
それほどだいそれた事ではないかも知れん。
0718デフォルトの名無しさん2013/06/27(木) 12:50:29.54
IE11、正式にWebGL対応するらしいね。
0719デフォルトの名無しさん2013/06/27(木) 16:47:07.42
まあIEらしい罠が盛りだくさんなのは確定的に明らか
0720デフォルトの名無しさん2013/06/27(木) 18:09:20.36
WebGL標準潰しの罠ですね判ります
0721デフォルトの名無しさん2013/07/04(木) NY:AN:NY.AN
IE11のWebGLについて、ここが今のところ仕様の手がかり。
http://msdn.microsoft.com/ja-jp/library/ie/bg182648(v=vs.85).aspx

Three.js使ったコンテンツが動きますヨ。と書いてあるので、
互換性はそれなりに大丈夫なんじゃまいか。

一時期、シェーダーだけはGLSLじゃなくてHLSLを亜種でないと
書けないようにするんじゃないかという懸念があったが、どうやら杞憂で終わったようだ。
早くWin7向けにIE11出ないかな。
0722デフォルトの名無しさん2013/07/17(水) NY:AN:NY.AN
あるソフトが、OpenGL2.1がないというエラーを出して起動できません。
OpenGLというのはグラフィックのチップが対応する命令ということまでは
わかったのですが、自分のPCが対応しているかどうかがどうしても
わかりません。
PCは、hpの2230sで、4GB、XPです。
ドライバなどを入れると使えるようになるのでしょうか。
0723デフォルトの名無しさん2013/07/17(水) NY:AN:NY.AN
>>722
ソフト板かPC初心者板か、素直に猿知恵袋とかで聞けばよろし。
0724デフォルトの名無しさん2013/07/17(水) NY:AN:NY.AN
わかりました、ありがとうございます。
0725デフォルトの名無しさん2013/07/17(水) NY:AN:NY.AN
これ入れればバージョンわかるで
http://www.ozone3d.net/gpu_caps_viewer/
0726デフォルトの名無しさん2013/07/21(日) NY:AN:NY.AN
なんでopenGLって深度バッファ必須なんだろうな
2D的に使いたい場合は上書きだけで良いんだが
0727デフォルトの名無しさん2013/07/21(日) NY:AN:NY.AN
馬鹿には無理
0728デフォルトの名無しさん2013/07/21(日) NY:AN:NY.AN
デプステストをEnableにしなきゃいいだけじゃないん?
0729デフォルトの名無しさん2013/07/21(日) NY:AN:NY.AN
うん、そうだったみたい
エラーが出てるところを読み違えてた
0サイズのテクスチャーが扱えないんだな
0730デフォルトの名無しさん2013/07/23(火) NY:AN:NY.AN
OpenGL 4.4きたぞ
0731デフォルトの名無しさん2013/07/23(火) NY:AN:NY.AN
thx!
0732デフォルトの名無しさん2013/07/23(火) NY:AN:NY.AN
1.x以来の4番台?
0733デフォルトの名無しさん2013/07/23(火) NY:AN:NY.AN
glTexImage2Dで最後の引数void*に0を入れた場合の初期化って0に指定できます?
0に初期化して必要な部分だけglTexSubImage2Dで指定したいのですが
0734デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
void*に0したら何をしなくても0初期化される?
0735デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
たしか中身不定になるはず
初期化してない変数と同じでゴミデータが詰まっている状態
0に初期化したい部分はglTexSubImage2Dでわざわざ埋めてやらないとだめ
0736デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
あれ、そうなのか
何も考えずにglTexImage2D(0)でサイズだけ確保→glTexSubImage2Dで一部だけテクスチャー貼り付け
したらその部分以外は0っぽくなって(すくなくともアルファ値0)大丈夫かな?と思ったんだが
0737デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
お前がそう思うならそれで良いよ
べつにだれも困らないから
0738デフォルトの名無しさん2013/07/24(水) NY:AN:NY.AN
リファレンス読めよ
0739デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
IE11 Developer Preview出たね。
自作のWebGLアプリを試してみたら、ちゃんと動いた。少し感動だ。
0740デフォルトの名無しさん2013/07/27(土) NY:AN:NY.AN
OpenGLを動かしているといつの間にかモニタの色深度が16bitになっていることがあって
その状態で気が付かないままOpenGLを使用したアプリを動かすと画面が壊れたり
最悪システムがクラッシュするという事態に遭遇
ここのトップで紹介されてるglxgearsも動かすと色深度が勝手に落ちるみたいな
報告が一部であったようだけどこの問題何なんだ
0741デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
現在Windows環境でglewを使いプログラムを書いています。
FPSを取得したいので、WM_PAINTメッセージが呼ばれたさいの描写にかかる処理時間からFPSを出していますが
上手くFPSの値を得ることができません。
glewを使ったさいの正しいFPSの取得方法を教えて下さい。
0742デフォルトの名無しさん2013/08/06(火) NY:AN:NY.AN
そもそもglew以外の環境でFPS値を取得することはできてますか?
FPS値取得は特定のフレームワークに依存するアルゴリズムではないのでスレ違いかと。
0743デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
>>742
例えばopenglを使っていなかった場合、描写に必要なデータが作られるのにかかる時間でFPSを出していますが
シェーダに描写データを作成させる場合にどこの部分を計測させると良いかがわからないです。
0744デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
FPSなんだから一秒間に何フレームか計れよ。
0745デフォルトの名無しさん2013/08/07(水) NY:AN:NY.AN
描画時間を測ってもFPSとしては正しくないだろう。
前回のSwapBuffersとの差を求めれば?
0746デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
Ivy Bridgeでセレクションモードを使ったマウスピッキング処理が遅い
古いオンボードGPU(GMA 4500)だと問題なく動いていた
セレクションモードって最近のGPUだと使わないほうがいい?
0747デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
>>746
GPUによって処理が遅くなるかどうかは知らんが、
トイプログラムやちょっとした実験とかならいざ知らず、
今も昔も実用的なアプリでは使わない機能だと思う。

たいていは当たり判定処理や可視判定処理のために、
ポリゴン群(や3Dオブジェクト群)をツリー構造やグリッド構造などに入れている。
そこまで環境が整備されていれば、マウスピッキングもたやすい。
わざわざセレクションモードを使うまでもない。
(こちらは、重なったポリゴンの奥の物を指すこともできるし)
0748デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
あんな2回レンダリングしなきゃいけないやつ使ってるのがいたとは
0749デフォルトの名無しさん2013/08/11(日) NY:AN:NY.AN
>>748
個人で作ってる物理シミュレーションの可視化アプリなんで、
パフォーマンスはあまり気にしてなかったんだ。
ぐぐってみると、カラーバックバッファを使った方法があったので
今こっちの方法で書き直してる。
0750デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
OpenGL ESについて質問させてください

OpenGL ESのバージョンには、
1.0 1.1 2.0 3.0
がありますが、
1.0と2.0では描画スピードに差があったりするものでしょうか?
0751デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
当然自分で計測してみた上での質問ですよね?
0752デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>750
3.0 > 2.0 > 1.1 > 1.0
の順で早いよ、そういう質問は初心者すぎ
07537502013/08/12(月) NY:AN:NY.AN
>>751
すいません、まだOpenGL ESの勉強を始める前で、
バージョンが数種類あるみたいだからどれがいいかなと思いまして。

>>752
ありがとうございます。
0754デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
>>753
ESってことはAndroidかiOSかな?
どっちも今の主流は2.0だから、2.0がお勧めだけど、最初はとっつきにくいよ。
あと、そもそも生のOpenGLを叩く必要があるの?って気も…。
0755デフォルトの名無しさん2013/08/12(月) NY:AN:NY.AN
OpenGLってGPUが1.0対応だった場合2.0の機能は
DirectXのHELみたいにソフトウェアで代用されるの?
それとも使用した時点で落ちる?
0756デフォルトの名無しさん2013/08/14(水) NY:AN:NY.AN
落ちるんじゃね?
0757デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
glutでちょっとしたデモをプログラミングしていましたが、
PC変えてから、正しく描画されなくなりました(真っ白というかデフォルト色のまま?になる)
glutInitDisplayMode(GLUT_RGBA) → glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA)
glFlush → glutSwapBuffers
とすると、正常に描画されるみたいなんですが、原因を知りたいです
0758デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
>>755
落ちるというか、関数ポインタを取得するときに0が返るはず。

>>757
glutとかOpenGLのドキュメントをもっとしっかり読めば原因を突き止められると思うよ。
0759デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
OpenGLはドライバによってステートの扱いが適当だったりするよね
0760デフォルトの名無しさん2013/08/15(木) NY:AN:NY.AN
SuperBible 6th Edition買っちゃうお!
0761デフォルトの名無しさん2013/08/16(金) NY:AN:NY.AN
>>759
具体的にどのドライバの何のステートが適当なの?
0762デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
2分木や多分木を3Dで表示したいのですがOpenGLで可能ですか?
こんな感じのです。
        root
/ | \
     a b c
/ | \/ | \/ | \
0763デフォルトの名無しさん2013/08/18(日) NY:AN:NY.AN
可能です
0764デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
>>762
OpenGLでは線も描画できるので、何を描くかは
完全にアナタ次第よ。
0765デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
だいぶ絵も出せるようになったので、ゲームらしく音を鳴らそうと思います。

そこでmp3にも対応しているOpenSL ESで音を鳴らそうと思うのですがwindowライブラリーが見つけられない状態です。

どこにあるのか教えて頂けると助かります!
お願いします。
0766デフォルトの名無しさん2013/08/19(月) NY:AN:NY.AN
OpenGLでは音を鳴らすライブラリはありません
まずはゲームスレに行ってみればいかがか?
0767デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
そうなんですか
OpenSLとOpenGLは無関係なんですか?
音鳴らすのは3D出すよりハマリそうな予感ですね・・・
0768デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
音なんてハードディスクのアクセスを細かく制御すればなんとかなるよ
0769デフォルトの名無しさん2013/08/20(火) NY:AN:NY.AN
ウチのマシンSSDだから音でない
0770デフォルトの名無しさん2013/08/27(火) NY:AN:NY.AN
openglのglutって古くさいとテンプレに書いてるけど
今からはじめるならもっと良いのがあるのかな
情報量やCやpythonでopenglを扱うなら一番の選択だと思ったんだけどどうなんですか
0771デフォルトの名無しさん2013/08/27(火) NY:AN:NY.AN
勉強レベルなら何も困らないしUIしたくなったらオプションでgluiも
glutじゃ複雑な製品レベルのものは作れないよってだけだし
0772デフォルトの名無しさん2013/08/27(火) NY:AN:NY.AN
OpenGL のサンプルコードを手っ取り早く動かすときには glut で十分だね。
07737702013/08/27(火) NY:AN:NY.AN
glutとgluiで十分そうだから取り敢えずこれをやってみます
0774デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
コンソールアプリでopengl出来ませんか?
freeglutなしで、openglだけで
全画面表示だけでも良いので。
0775デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
コンソールアプリがなんのことか判らんが、glutなしでもopenGLはできるよ。
0776デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
できますよ
0777デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
やりかたおしえてください。
0778デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
そもそも実行環境もOSも何もかも不明で、いったい何を答えろと言うんだろう?
頭が悪いにもほどがある。
0779デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
空気読めない奴はスルーで・・・
0780デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
馬鹿には無理
0781デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
と、あの時は思っていた
0782デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
windows 7 です。
教えてください。
実行環境はmingwです。
0783デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>774
OpenGLを使うにはwindowsでもlinuxでも必ずウィンドウを作らないといけない。
なのでX11が動いてないような状態でOpenGLは使えない。
でもウィンドウを非表示にしてコンソールアプリっぽくする事は可能
0784デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
これを読めばわかるでしょう
ttp://www.opengl.org/wiki/Getting_Started
0785デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>783
画面はリアルタイムにみえなくていいから
動画をファイルにして出力ってこともウインドーを作らないと無理ですか?
0786デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>785
画面に何も表示しない場合でもウィンドウハンドルかデバイスコンテクストがないと
OpenGLのコンテクストは生成できなかったはず。
というか、windows7でmingw使うならウィンドウ作るけど非表示にしておく方法で問題ないと思うけど。
コンソールアプリを作るときに
CreateWindowしてOpenGLコンテクスト作って、ウィンドウは非表示のままでOK。
0787デフォルトの名無しさん2013/08/30(金) NY:AN:NY.AN
>>786
> 画面に何も表示しない場合でもウィンドウハンドルかデバイスコンテクストがないと
> OpenGLのコンテクストは生成できなかったはず。

PIXELFORMATDESCRIPTOR 構造体の dwFlags メンバ変数に PFD_DRAW_TO_BITMAP を指定して、
メモリに作ったビットマップからデバイスコンテキストを得れば良いんとちゃうの?

こんなことやったこと無いから知らんけど。
0788デフォルトの名無しさん2013/09/03(火) 21:22:47.69
超初心者です。ちょっと上手く伝わるか分からないけど質問にお付き合い頂けると幸いです
c++、gtkmm3+GLXでプログラムしているのですが、glNewList で予め用意していたリストをon_draw等の描画処理関数の場所で
glCallList、glXSwapBuffersを使い書いているのですが、ウィンドウを隠す&表に出す操作をして何回か書かせると描画しなかったり
途中まで書いた状態になったりします。この動作を治したいのですが、なにかとっかかりを教えていただけると嬉しいです。

[環境]
OS: Debian(wheezy) Linux 3.2.46 i686
言語: c++ (g++ 4.7.2)
ライブラリ: gtkmm3.0、glx1.4(nvidia)
グラフィックドライバ: nvidia 304.88

[コード(一部)]
virtual bool on_draw( const Cairo::RefPtr<Cairo::Context> & cc ) {
if( glIsList(1) ) {
glCallList( 1 );
} else {
return false;
}
glXSwapBuffers(GDK_WINDOW_XDISPLAY(Glib::unwrap(get_window())), GDK_WINDOW_XID(Glib::unwrap(get_window())));
return true;
}
0789デフォルトの名無しさん2013/09/04(水) 04:28:02.75
ヒント
デバイスロスト
0790デフォルトの名無しさん2013/09/04(水) 13:10:58.64
俺はこういうえらそうに糞みたいなアドバイスをしていい気になってるカスが一番嫌いだ
0791デフォルトの名無しさん2013/09/04(水) 14:52:23.29
わかる
でも誤爆じゃないのさすがに
0792デフォルトの名無しさん2013/09/04(水) 15:14:59.84
馬鹿には無理
0793デフォルトの名無しさん2013/09/04(水) 17:45:02.94
>>790
あなたの好き嫌いなどこのスレではどうでもいいことでは?
詳細にごちゃごちゃ言うよりはシンプルで嫌いじゃない、という人もいるんだし。

あなたが質問者本人でしたら、すいません。
07947882013/09/04(水) 18:25:35.98
喧嘩はやめて・・・

ググってみたんだけどデバイスロストはWindows環境のものらしいから関係ないかも・・・
でもそれ以上に深い意味があるとしたら私はわからなかったよ

現象が再現するサンプル作ったけど上げ方わからないしなー
あとコンパイル環境も悪いのではと疑っています、これはDebianスレで聞いた方がいいのかな?
0795デフォルトの名無しさん2013/09/04(水) 18:44:15.08
>>788
displayList使うのをやめてみても同じ現象がおきるかどうかを調べてみて、
原因がdisplayListなら使うのを止めるのを薦める
そうで無いなら今の情報では分からないから原因を絞り込む
07967882013/09/04(水) 18:58:21.25
>>795
リストを使うのをやめても現象が出ました orz...
どうも最初考えていたリストが原因ではないようです
絞り込みについては環境の方とあわせて悩み中です
0797デフォルトの名無しさん2013/09/04(水) 19:17:43.26
>>796
じゃなんとなくだけど、glBegin() glEnd()使ってるでしょ? glEnd()をどっかで忘れてんじゃね (根拠ないけどね)
0798デフォルトの名無しさん2013/09/04(水) 19:24:29.92
>>796
あ、glGetError()のチェックのが先かも
07997882013/09/04(水) 19:48:15.12
>>797
予想の通りにglBegin()を使っています。
テストプログラムを確認してみましたがglEnd()の忘れはないようです。
私の思い込みもあると思いますが、一回しかglBegin()を使っていないので
現象が発生するテストプログラムでは忘れていないと思います・・・

>>796
on_drawの一番最後に以下の関数を呼び出しているのですが何も出力されませんでした。
fprintfだとダメです?
void OpenGL_errors() {
int error;
while( (error = glGetError()) != GL_NO_ERROR ) {
fprintf( stderr, "OpenGL error: %s\n", gluErrorString(error) );
}
}
0800デフォルトの名無しさん2013/09/04(水) 19:56:16.62
コンテキストちゃんと管理してる?
08017882013/09/04(水) 20:05:36.53
>>800
それは自信が無いです。色々有り難うございます。
on_realize()で一回次の関数を読んでいるだけなので・・・デストラクタでコンテキストなどの削除を行なっているのですが
行数が足りなくてこれ以上書けません。
private:
void init_glx() {
GLint glx_attrs[] = { GLX_RGBA, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, GLX_DOUBLEBUFFER, None };
xdisplay = GDK_WINDOW_XDISPLAY( Glib::unwrap( get_window() ) );
xid = GDK_WINDOW_XID( Glib::unwrap( get_window() ) );
visual = glXChooseVisual( xdisplay, DefaultScreen(xdisplay), glx_attrs );
if( !visual ) {
throw std::runtime_error( "failed glXChooseVisual." );
}
glx_context = glXCreateContext( xdisplay, visual, NULL, true );
if( !glx_context ) {
throw std::runtime_error( "failed glXCreateContext." );
}
if( !glXMakeCurrent(xdisplay, xid, glx_context) ) {
throw std::runtime_error( "failed glXMakeCurrent." );
}
}

Display *xdisplay;
unsigned long int xid;
XVisualInfo *visual;
GLXContext glx_context;
0802デフォルトの名無しさん2013/09/04(水) 20:07:38.16
>>789
を書いた者です。
正直すまんかった。
症状がDirectX9のデバイスロストと似ていたので適当な事を書いてしまいました。

LinuxでOpenGLを使った事はあまりないから大したアドバイスはできないけど・・・
1, 新しめのドライバを使ってるならGL_KHR_debugを使った方がより詳しく問題を見つけられるかも。
http://www.opengl.org/registry/specs/KHR/debug.txt

2, コンテクストを初期化したスレッドと描画しているスレッドが同じか確認。
OpenGLでマルチスレッドな事をするとうまくいかないかも。

3, ウィンドウのサイズが変わったり,隠す&表に出したときにちゃんと再描画しているか確認。
アニメーションしてて一定時間毎に描画しているなら関係無いけど。

4, displayListはver3で廃止になったので代わりにVertex Buffer objectを使う事を奨める。
古いグラボを使っているとか, まじめにOpenGL使わなくていいとかなら気にしなくていいけど。
08037882013/09/04(水) 21:00:15.90
>>802
いえいえレス有難う御座いました。

>1
英語は苦手なので読むのに時間がかかると思いますがぼちぼち見てみます

>2
スレッドは使っていないのでこれは大丈夫かと

>3
これは微妙で、一応ウインドウが隠れた時と現れた時にon_draw()を通っていることを確認しています。
そこに描画処理を書いているつもりなのですが、実際は時々描画しなかったりしているので何か何処か
が悪いのでしょう・・・

>4
古いグラボなんです・・・消費税が上がる前にPCごと買い換える予定ですが今は
玄人志向GeForce6200A-LA128C を使っています。
Vertex Buffer object も少し見てみます。(と言っても本番は球体と直線を書かないといけないんです)
ググってちらっとみましたが難しそうですね
0804デフォルトの名無しさん2013/09/05(木) 18:14:29.76
誰にレスしとるのかわからんが、グラボ古過ぎ
0805デフォルトの名無しさん2013/09/05(木) 20:17:10.61
Geforce6でもOpenGL2.1は対応してるみたいだし問題ないんじゃない
0806デフォルトの名無しさん2013/09/07(土) 23:20:26.12
OpenGL ESをDirect3DでラップするANGLEというのがあるけど
これを使えばDirect3D版とOpenGL(ES)版の両方のプログラムを描かなくても良いかーなんて思ったが
ANGLEでもシェーダー等全てを変換出来るか分からないし
ANGLEがWindows Phoneのような他のプラットフォームに移植されるか分からないし
やはり両対応が無難かと思った
0807デフォルトの名無しさん2013/09/09(月) 18:52:02.23
シェーダーの詳しい解説ないかな?
0808デフォルトの名無しさん2013/09/09(月) 19:08:56.80
>>807
ひまわり本をどうぞ。
http://www.borndigital.co.jp/book/2020.html
0809デフォルトの名無しさん2013/09/10(火) 00:56:07.02
>>806
WPで動くかは知らないが、ChromeのWebGLでできることはANGLEでできると思われ
シェーダは内部でHLSLに変換されるし、手動で変換するためのessl_to_hlslってツールもついてる
まあ両対応できる余裕があるならそれに越したことはないが
0810デフォルトの名無しさん2013/09/10(火) 13:19:32.37
>>809
WPにもポートされると良いな
WPではシェーダーを実行時にコンパイルする事は出来ないようなので
手動変換は必要っぽい
0811デフォルトの名無しさん2013/09/14(土) 00:25:41.21
テクスチャのサイズを変更したい場合どうすればいいんでしょうか?
既存のテクスチャにglTexImage2Dで異なるサイズを指定してやると、
小さいサイズでは問題なさそうなんですが、元より大きなサイズを
指定するとGL_INVALID_OPERATIONになってしまいます。
0812デフォルトの名無しさん2013/09/14(土) 01:32:32.58
そのテクスチャ本来のサイズでOpenGLに渡して
描画はミップマップなりフィルタリングなりさせれば良いんじゃないのか?

画像サイズを変えたいということであれば
それはOpenGLではなく画像処理の話になってくるのでスレ違い
0813デフォルトの名無しさん2013/09/14(土) 07:57:41.28
描画じゃなくて、そのテクスチャ本来のサイズを変えたいんですが。
たとえば最初1024x768でテクスチャを作って、途中からそれを1920x1080の
別のビットマップに差し替えるというようなことをしたいと思ってます。
そのビットマップをどう用意するかももちろん別の話で。
0814デフォルトの名無しさん2013/09/14(土) 08:11:02.87
ビデオカードによって扱えるテクスチャの最大サイズがあるので、それを超えてしまってるんじゃね
0815デフォルトの名無しさん2013/09/14(土) 08:19:01.65
GL_MAX_TEXTURE_SIZEって列挙があるね
調べてみれば?
0816デフォルトの名無しさん2013/09/14(土) 09:05:32.04
GL_MAX_TEXTURE_SIZEは16384で、最初から大きなサイズで作るぶんには4Kサイズでも
問題ありませんでした。エラーになるのは最初のサイズより大きなものに差し替える場合だけで。

質問したいのはglTexImage2Dで別のサイズのテクスチャに差し替えることがOpenGLの仕様で
認められているのかどうかと、他にテクスチャのサイズを変更する方法がないかどうかですが、
仕様上glTexImage2Dで可能なはずだということであれば、環境の問題と思ってあきらめます。
0817デフォルトの名無しさん2013/09/14(土) 09:56:40.44
>>811
2のべき乗になってないんじゃね
0818デフォルトの名無しさん2013/09/14(土) 10:19:18.67
単純にAPIの呼び出し手順が間違ってると予想
0819デフォルトの名無しさん2013/09/14(土) 10:39:42.90
>>818
コードは同じで大→小はエラーが出ず、小→大の場合だけエラーになるんですが、
サイズ変更するにはどういう手順が正しいんでしょうか?

// 初回
glGenTextures
glBindTexture
glTexImage2Dで初回のサイズ指定
glTexParameterもろもろ

// 描画時
glBindTexture
glTexSubImage2DでPBOからピクセル転送
描画

// テクスチャ変更時
glBindTexture
glTexImage2D ←ここでサイズを大きくするとGL_INVALID_OPERATION
0820デフォルトの名無しさん2013/09/14(土) 11:07:05.57
どうせ引数指定が間違ってる
0821デフォルトの名無しさん2013/09/14(土) 11:17:23.37
引数はこうですね。変えているのはwidthとheightだけです。

glTexImage2D( GL_TEXTURE_2D,
0,
GL_RGBA,
width,
height,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
NULL
);
0822デフォルトの名無しさん2013/09/14(土) 12:05:34.09
>>821
2のべき乗になってないんじゃね
0823デフォルトの名無しさん2013/09/14(土) 12:31:51.78
一応、OpenGLは4.1なんでそこは問題ないと思っています。
0824デフォルトの名無しさん2013/09/14(土) 13:05:02.26
今回の件とは関係なく
ドライバやドキュメントが嘘ついてることもあるので
実際に検証するってのは大事だと思う

それもその場限りの検証でなく
ユニットテストのような形で残しておけば
環境が変わっても役に立つ
0825デフォルトの名無しさん2013/09/14(土) 14:53:40.83
解らないなら「馬鹿には無理」と書いてあると思っていい
0826デフォルトの名無しさん2013/09/14(土) 16:39:14.66
とりあえず一旦glDeleteTexures()してglGenTextures()したらうまくかどうかを試して見ては?
0827デフォルトの名無しさん2013/09/14(土) 19:31:35.57
作り直した場合はまぁ、うまくいきますね。
ここでテクスチャのサイズ変更の正しい手順を訊いてわからなければ、
そういう方向で修正しようと思っていました。
0828デフォルトの名無しさん2013/09/14(土) 19:39:57.32
仕様上glTexImage2Dで不可能なはず
0829デフォルトの名無しさん2013/09/14(土) 19:55:35.27
俺普通に縮小拡大やってるけど
まあ環境依存はしそうなので俺が出来たから他でもできるとは限らないが
0830デフォルトの名無しさん2013/09/14(土) 20:37:16.18
>>828
そういう操作が可能か保証されていないということがはっきりすればすっきりするんですが。
ちなみにそのことを説明しているドキュメントとかどこかにないですかね?
このへん見ても探せなくて。
http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml
0831デフォルトの名無しさん2013/09/14(土) 21:53:45.18
glTexStorage2Dのドキュメント見ると、immutableって書いてある。

そして、equivalentとしてglTexImage2D使った擬似コードも書いてある
これをそのまま信じるなら無理な気がする
0832デフォルトの名無しさん2013/09/14(土) 22:02:37.50
えー
じゃあ俺のほうがコード見なおさないとイカンのか(´・ω・`)
0833デフォルトの名無しさん2013/09/14(土) 22:14:45.27
なるほど。glTexStorage2Dは自分の環境では使えなかったので詳しく見てませんでした。

ただ、glTexStorage2Dのドキュメントにだけあえてそのように記述していてglTexImage2Dの
ドキュメントにはそのように書いてないことと、glGetTexParameterのドキュメントの
GL_TEXTURE_IMMUTABLE_FORMATの項を読む限りでは、変更できなくなるのは
glTexStorage2D特有の動作で、通常は変更できるんじゃないかなと思ったんですが。
http://www.opengl.org/sdk/docs/man/xhtml/glGetTexParameter.xml
0834デフォルトの名無しさん2013/09/14(土) 22:29:43.40
>>833
> ただ、glTexStorage2Dのドキュメントにだけあえてそのように記述していてglTexImage2Dの
> ドキュメントにはそのように書いてないことと

OpenGL のAPIドキュメントはそういうのが他にもあるよ。
どれかは忘れたけど、他の関数で同じようなドキュメントの不備を経験して、
このスレで質問した覚えがある。
0835デフォルトの名無しさん2013/09/14(土) 22:40:31.60
そのへんの解釈の違いでドライバ毎に動作が異なるってのはありそうですねぇ。
0836デフォルトの名無しさん2013/09/14(土) 22:59:03.46
ん?もしかして

GLint b;
glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_IMMUTABLE_FORMAT, &b);
if(b == GL_TRUE)

で調べられるんじゃね?
と思った
0837デフォルトの名無しさん2013/09/15(日) 08:52:21.59
普通に職業グラフィックプログラマはいないのか?
VRAMにどう言う手順でメモリがとられ、サイズの変更ってどういう意味かを考えれば
そう言う発想にすら至らないだろ

glTexImage2Dでテクスチャサイズの変更なんて出来ない
そう言う発想する時点で低レベルを通り越して、GLやらDXを直接触るレベルに至ってないよ
0838デフォルトの名無しさん2013/09/15(日) 09:06:01.93
例えば、新車を買ったと思え
で、マニュアルを全部熟読したと思え
で、その車で浜から海に突入したと思え

で、言い出してるんだ
マフラーから浸水してエンジン止まってるのに
仕様で車が海に入れないって決まっていればいいのですが…
マニュアル読んでも明記してなくって…

ってレベルだw
0839デフォルトの名無しさん2013/09/15(日) 09:07:30.49
>>837
VRAMのメモリって通常のメモリとどう違って確保されるの?
0840デフォルトの名無しさん2013/09/15(日) 09:31:15.51
>>838
あとその例えは車と海なら必ずそうなるだろうけど
すでに試したいくつかの環境では実際にサイズ変更できちゃってるからなあ
0841デフォルトの名無しさん2013/09/15(日) 09:44:57.04
全く同じプログラムを用いても「できる環境」と「できない環境」がある。

それら2つの環境で正しく動くようにしたいのなら、「できない環境」に合わせればいい。
「できる環境」だけでよければ「できる環境」に合わせればいい。

それだけのことじゃないのか?

たとえ仕様に正しいことが書いてあっても実際は仕様と違っている、あるいは
仕様以上の事をやろうとして結局仕様と違う事をしてしまっているグラボやドライバなんて、
いくらでもある。
(グラフィック系に限らず世の中いくらでもある)
0842デフォルトの名無しさん2013/09/15(日) 09:51:28.03
そうなんだよな
まあ今のところさほど大規模じゃないので出来ない環境を排除する方向で動いてはいるが・・・
動かない環境をはっきり定義出来ないのがな、グラボバージョン多すぎ
08438112013/09/15(日) 10:45:15.41
>>841
ここで訊きたかったのは、まずはその仕様の正しい解釈の方ですけどね。
そのうえで、その「正しい解釈」に基づいたプログラムが正しく動かない
環境についてどうするか、ってのはもちろんここで聞くことじゃあないです。
0844デフォルトの名無しさん2013/09/15(日) 12:28:28.41
>>843
その「正しい解釈がどういうものか」が仕様書やドキュメントには書かれていない。

どうするの?
ユーザー個人個人が自分で正しい解釈を推測するの?
0845デフォルトの名無しさん2013/09/15(日) 12:55:02.19
まぁ、最初に質問したときはまさかその解釈が割れるとは思わなかったですからねぇ。

今回の件でどうするかといえば、もともとここで質問して自分のコードの間違いが
わかればそれを修正するし、そうでなければ回避するよう考えていました。
一般的な解は知りません。同じような問題が発生したらその都度判断することに
なるでしょう。
0846デフォルトの名無しさん2013/09/15(日) 13:26:08.46
ちなみにエラーになる環境ってどんなの?GPUとかドライバとか

ためしにやってみたが、うちのGeforceじゃ大きいでglTexImage2Dしてもエラーにならないんだけどな
描画する直前に乱数のサイズでglTexImage2Dしてもエラーにならない

はるか昔まだglBindTextureが無い時代だと、テクスチャ更新するたびにglTexImage2Dするしかなくて
そのときは小さいテクスチャから大きいテクスチャにTexImage2Dしてただろうし
仕様的にはできるとおもうだけど
0847デフォルトの名無しさん2013/09/15(日) 13:30:44.13
おもうだけどw

てっきりPCだと思ってたんだが違うとなるとむしろハードウェアのドキュメントを漁ったほうがいいんじゃね
0848デフォルトの名無しさん2013/09/15(日) 16:56:43.94
小→大に変更する時、メモリ再割り当てに成功するかどうかが重要なんじゃないかな
0849デフォルトの名無しさん2013/09/15(日) 17:36:07.91
お前らバカ丸出しだな

メモリの最割り当ては、glTexGenし直すって事なんだよ
glTexImage2Dはメモリ上書きで、たまたま上手く動いているケースがある
ってだけだろw

確保しているメモリ領域をポインタに
再度リークもどきで、上書き確保してみろ、より大きいサイズテクスチャは
バッファオーバーラン状態になるの理解出来ないか?
小さいサイズは既にあるメモリ領域内で、たまたま動くだけ

こんなのプログラムでメモリ触った事ある奴なら当たり前なんだけどな…
とうぜんGL使いにも当たり前
0850デフォルトの名無しさん2013/09/15(日) 17:40:40.34
内部の動作が規定されているわけでは無いので、
エラーを返す、同じ場所を拡張する、別の場所に再割り当てして内容をコピーする、
あらゆる可能性が考えられる。
持っているリソースハンドルはVRAMの物理アドレスじゃ無いんだから。

プログラマは出来るだけ多くの実機で試して、現実にそこにある実装に従うしか無い。
0851デフォルトの名無しさん2013/09/15(日) 17:43:11.10
試しに、最後にglTexImage2したテクスチャに
同じglTexGenしないで再度glTexImage2するってやってみろ
アドレスの後ろに次のテクスチャが無いから動くんじゃね?

GLの仕様とかじゃなくて、プログラムのメモリ確保の常識の問題だっつーの
これが、ゆとり世代の奴らなのかね…
0852デフォルトの名無しさん2013/09/15(日) 17:48:52.41
バカ丸出し
○○w
○○ろ
○○だっつーの
ゆとり世代云々

俺が他人にアドバイスするときは、こんな風には言えないな
ネットでもリアルでも
0853デフォルトの名無しさん2013/09/15(日) 17:49:26.65
>850が正しいだろ。
なんでGLのVRAMの確保の仕方を勝手に決め付けちゃってるの?
実装によって異なるだろう。

>836
で調べてからDelete,Genするか決めればいいんじゃないの・
0854デフォルトの名無しさん2013/09/15(日) 17:50:01.69
たとえば元祖C言語のreallocだと拡張不能なら、別の場所に再割り当て。
メモリ確保はそのときの実装に従うべき話だし、確保の処理手順に常識なんて無いよ。
0855デフォルトの名無しさん2013/09/15(日) 17:52:51.76
glTexImage2Dは二度目のコールは、同じテクスチャを拡張する事が出来ない
って仕様に書かれてないから、出来るか出来ないか分からない
ってバカ丸出し

少しでもプログラムやメモリ確保を理解すれば
いちいちアホの発想を諭すような仕様を明記するなんてしてない
同然、出来ないに決まってるだろって話

例えば、C++で同じポインタ変数に、deleteしないで
何度もnewしたらメモリリークしてるよな?

でも動いているんです、(メモリ不足や使用アドレスを上書きしない限り、たまたま動く)
仕様にも同じポインタ変数にnewしてはいけないって明記してないんです
とか言ってるようなもんw
0856デフォルトの名無しさん2013/09/15(日) 17:55:13.16
あーお前ら、質問者の意図を理解してないな

glTexGenは一回だけ
あとは何度もglTexImage2だけ呼んで、テクスチャのサイズを変えたい
っていってるんだぞ?
0857デフォルトの名無しさん2013/09/15(日) 17:58:35.90
>>855
reallocの話を出したとたんに都合が悪いから無視、
関係ないnew/deleteでごまかす狼狽っぷりは、
他人を煽るけど自分が突っ込まれるのには弱いみたいだね。
0858デフォルトの名無しさん2013/09/15(日) 18:00:20.46
同一のglTexGenによる
glTexImage2DのVRAM割り当ては、同じアドレスになるに決まってだろ

OpenGLはグラフィックAPIであって、ミドルウェアやライブラリじゃねーんだそ
そんな便利機能があるわけないw

つか便利機能つーか、破綻する機能だろ
そう言う発想してる時点でプログラム向いてないぞ
0859デフォルトの名無しさん2013/09/15(日) 18:01:31.79
>>857
論点をずらしてるよ

glTexImage2Dは、只のmallocだから
0860デフォルトの名無しさん2013/09/15(日) 18:06:01.96
つか、Cの仕様では
reallocは同じアドレスになる事は、”保障してない”

たまたまドライバ依存で、動く環境あったら
環境に従うべき?
…大笑いだわw
0861デフォルトの名無しさん2013/09/15(日) 18:07:44.22
>>858
>glTexImage2DのVRAM割り当ては、同じアドレスになるに決まってだろ
規定されていないので決まっていない。

たとえばDirect3D9Ex以降なら、ロック画面を出して一度VRAMを飛ばしても、
自動的に再確保されて修復されるようになっている。
0862デフォルトの名無しさん2013/09/15(日) 18:08:54.88
>>846
なるほど、glGenTexutresもglBindTextureも無かった頃(1.0?)はglTexImage2Dで
サイズ変更できなかったわけがない、と。それは説得力ありますね。

で、>>846>>848で言われて気づいたんですが、単なるメモリ不足のセンも
考えられますね。開発環境はHD6450MでVRAMが512MBしかないんで。
まずは自分の使い方を疑っていたんで、メモリ使用量まではチェックして
ませんでした。
0863デフォルトの名無しさん2013/09/15(日) 18:12:17.92
>>860
論理アドレスを使っているんだから、自動的に再確保されたらOSの支援でも無ければ戻ってくるアドレスは変わるのは当然。
なんで元のアドレスを使う話に持って行ってごまかそうとするの?
そうやってビクビク逃げ回るほど臆病なのにいったい何がしたいの?
0864デフォルトの名無しさん2013/09/15(日) 18:13:04.36
バカ丸出しだな
なんだ?2chのレベルでグダグダ論議したいだけで解答は不要なのか?

海外でも日本でもまともなGLのフォーラムで質問してみろ
glTexGenしなおせって話にしかならないからw
0865デフォルトの名無しさん2013/09/15(日) 18:13:58.18
>>858
別のアドレスを割り当てられるならそうしたほうがいい気がする、のでそうする気がする

まあ問題は、内部動作を勝手に決めつけてる方なのでこういう推論は無意味だが
だから出来ない、とは言い切れないと思うんだよね
だからできるかどうかは規定されているべきなんだよね
0866デフォルトの名無しさん2013/09/15(日) 18:15:19.52
>>862
当然、メモリを単純に拡大して元の情報を保とうとしたら、
一旦は拡大前後合計のメモリが必要になることは理解するよな?
0867デフォルトの名無しさん2013/09/15(日) 18:15:32.53
glTexImage2Dは、自動的に再確保じゃねーだろw
GL使って昔から仕事でもしてれば、当然の範疇
0868デフォルトの名無しさん2013/09/15(日) 18:16:16.01
>>864
実装上必要ならglTexGenしなおすのは当然なんだが、
いったい何を言いたいのか意味不明。
0869デフォルトの名無しさん2013/09/15(日) 18:19:14.73
>>867
最近のドライバ使ってるせいか普通に出来てるんだよね
0870デフォルトの名無しさん2013/09/15(日) 18:21:08.78
世の中
ある時代のある分野の常識で考えれば分かる問題と
ある時代のある分野の常識で考えても分からない問題と
ある時代のある分野の常識で考えると間違える問題がある

それだけのこと
0871デフォルトの名無しさん2013/09/15(日) 18:23:09.86
実装がどうなっているかなんて、試してみなけりゃ分からない。
固定観念を持っている方が危険。
0872デフォルトの名無しさん2013/09/15(日) 18:23:48.35
>>868
>>856 読め
0873デフォルトの名無しさん2013/09/15(日) 18:27:55.29
>>866
元の情報を保つ必要はないから一旦破棄して再確保でも問題ないのでは?
0874デフォルトの名無しさん2013/09/15(日) 18:28:34.62
そんなわけで当初の質問者に試して欲しいんだが
その環境で、充分小さいサイズのテクスチャから、充分小さいサイズのテクスチャに”拡大”できるかどうかを試して欲しい
それができればメモリの問題ということになるし、出来なければ仕様ということになる
0875デフォルトの名無しさん2013/09/15(日) 18:29:46.24
>>873
必要があるかないかはGL側は判断できるのかなあ
あー引数0か・・・
0876デフォルトの名無しさん2013/09/15(日) 18:38:38.51
実装がどうなってるか分からないから汎用的に組むべき

実装が明記してない&動くケースがある、だから動かない理由を質問 <- 具の骨頂
glGenTextureを再度呼べば良いだけっしょ
0877デフォルトの名無しさん2013/09/15(日) 18:50:56.74
>>874
その環境は今手元にないので、週明けにでも試してみます。
0878デフォルトの名無しさん2013/09/15(日) 18:54:20.97
>>876
その「汎用的」の基準として、仕様の上で正しい方法を質問したつもりなんですけどね。
そのうえで問題をどう解決するかってのは自分が考えることです。
0879デフォルトの名無しさん2013/09/15(日) 19:08:07.33
glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_IMMUTABLE_FORMAT, &b);
も試して欲しい。

うちの環境では
glTexStorage2D()だとGL_TRUE
glTexImage2D()だとGL_FALSE
だった。
0880デフォルトの名無しさん2013/09/15(日) 20:52:46.76
汎用的なコードの例

glGenTexture (...); /* 削除禁止:なぜかこうしないと動かない */
0881デフォルトの名無しさん2013/09/15(日) 22:10:36.94
配列は本来固定サイズで最大値をあらかじめアロケートするための方法
要素数1個の配列作る奴の方が変だが
リストボックスに表示するために行列変換するのもなんだかな、って感じだが
ちなみに変なのはワークシート関数の仕様であって、つまりEXCELが変。VBAが変なわけではない
0882デフォルトの名無しさん2013/09/16(月) 00:00:29.66
?
08838812013/09/16(月) 00:29:27.04
誤爆スマソ
0884デフォルトの名無しさん2013/09/16(月) 01:09:42.91
>その「汎用的」の基準として、仕様の上で正しい方法を質問したつもりなんですけどね。

思っていることを上手く伝えられないアスペのいい例。
0885デフォルトの名無しさん2013/09/16(月) 12:59:55.52
http://www.opengl.org/sdk/docs/man/xhtml/glTexStorage2D.xml

Upon success, the value of GL_TEXTURE_IMMUTABLE_FORMAT becomes GL_TRUE.
The value of GL_TEXTURE_IMMUTABLE_FORMAT may be discovered by calling glGetTexParameter with pname set to GL_TEXTURE_IMMUTABLE_FORMAT.
No further changes to the dimensions or format of the texture object may be made.
Using any command that might alter the dimensions or format of the texture object (such as glTexImage2D or another call to glTexStorage2D)
will result in the generation of a GL_INVALID_OPERATION error, even if it would not, in fact, alter the dimensions or format of the object.
0886デフォルトの名無しさん2013/09/16(月) 13:21:14.78
再現するコードがないので実は間違ったパラメータを2度目のglTexImage2Dで使っていただけという可能性も
0887デフォルトの名無しさん2013/09/16(月) 13:28:44.20
そうだね
0888デフォルトの名無しさん2013/09/16(月) 13:34:08.11
glTexImage2Dでサイズ変更できないのはglTexStorage2Dを使ったテクスチャだけだ

逆に言えばー
それ以外のテクスチャは普通に変えられるってことじゃん
0889デフォルトの名無しさん2013/09/16(月) 16:24:36.83
885の英語読んで言ってるのなら、どこにそんな事が書いてあるのか?w
0890デフォルトの名無しさん2013/09/16(月) 16:32:22.09
これがゆとり世代か…
まあ、もうどうでもいいかw
実際に出来ない事を、言葉遊びで延々やろうとしれば?w

仕様が明記してない&出来ない環境があるなら、それの手法は使わないのが普通だろ
自分の環境だけ動いて&それで良いってなら別だが
0891デフォルトの名無しさん2013/09/16(月) 17:12:51.44
glTexStorage2Dを使用したテクスチャではglTexImage2Dを使ってサイズ変更できない
→glTexStorage2Dを使用していないテクスチャでは glTexImage2Dを使ってサイズ変更できる

わざわざサイズ変えちゃいけないよ的なことがglTexStorage2Dの説明に書いてあるって事は普段は変えても良いよって事でしょう
0892デフォルトの名無しさん2013/09/16(月) 17:13:06.74
811以外にエラーになった人いるの?
ためしに古いノートのHD4570でやってみたけどどうやってもエラーにならないんだけど

少なくとも何件か再現されなきゃ、仕様に明記されてない現象認定はできないな
0893デフォルトの名無しさん2013/09/16(月) 17:21:33.66
動かないわけないしー
間違ったプログラムを書いただけだろう
0894デフォルトの名無しさん2013/09/16(月) 17:50:30.56
お前らちゃんと質問者の意図を理解してる?
>>813
>>819
>>821
読んでみろ、お前らは無意識に自分のちゃんとした手法で試してるだけ
つまり別テクスチャを作り直してるだけ

>>821のglTexImage2Dの最終引数見てみろ、NULLだろ
でwidthとheigthだけかえて、”もともとのテクスチャ”のサイズを変えたい
って言ってんだぞ
0895デフォルトの名無しさん2013/09/16(月) 18:24:47.23
>>894
glGenTextureからやらない動かないと言っていたところから、発言がだいぶ後退したよね。
0896デフォルトの名無しさん2013/09/16(月) 18:30:13.01
http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml

data may be a null pointer. In this case, texture memory is allocated to accommodate a texture of width width and height height.

大丈夫そうですね
0897デフォルトの名無しさん2013/09/16(月) 18:33:05.07
glGenTextureしなきゃ出来ないだろ、仕様に書いてあるぞw

glBindBuffer:
While a non-zero buffer object is bound to the GL_PIXEL_UNPACK_BUFFER target,
the following commands are affected:
glCompressedTexImage1D, glCompressedTexImage2D, glCompressedTexImage3D,
glCompressedTexSubImage1D, glCompressedTexSubImage2D, glCompressedTexSubImage3D,
glTexImage1D, glTexImage2D, glTexImage3D, glTexSubImage1D, glTexSubImage2D, and glTexSubImage3D.
The pointer parameter is interpreted as an offset within the buffer object measured in basic machine units.

glTexImage2D:
If a non-zero named buffer object is bound to the GL_PIXEL_UNPACK_BUFFER target (see glBindBuffer)
while a texture image is specified, data is treated as a byte offset into the buffer object's data store.

有効なglBindBuffeは、同じバッファオブジェクトを指す
つまり元のバッファより大きなピクセルサイズは指定出来ない

お前らは、おそらく新しいバッファオブジェクト作ってるだけ
0898デフォルトの名無しさん2013/09/16(月) 18:42:08.19
あとは、ドライバ側が優秀でその変を上手く回避する実装なだけ
昔は、nVIDIAで動くコードがATIじゃクラッシュしてglの仕様通りに記述したら
ATIでも動いたなんて頻繁にあったから
0899デフォルトの名無しさん2013/09/16(月) 18:44:14.06
釣りが必死
0900デフォルトの名無しさん2013/09/16(月) 18:47:37.90
>>897
誰もPixelBufferObjectを使ってるとか言ってないんですが
0901デフォルトの名無しさん2013/09/16(月) 18:50:31.47
何処をどう読んだらそういう意味になんだよ
何が仕様だいい加減にしろ
0902デフォルトの名無しさん2013/09/16(月) 18:50:40.58
>>897
全然関係ないような気が。
GL_PIXEL_UNPACK_BUFFERにbindしたバッファから転送する場合には
引数dataはバッファ先頭からのオフセットになると書いてあるだけだが?
0903デフォルトの名無しさん2013/09/16(月) 18:51:03.31
>>900
君ねぇ…w
glBindBuffeをコールすると、
GLは君には知られないようにピクセルバッファオブジェクを作るんだよ

glGenTextureをコールすると、
GLは君には知られないようにテクスチャオブジェクを作るんだよ

もっとGLを勉強しなさい
0904デフォルトの名無しさん2013/09/16(月) 18:52:12.22
>>902
うんそうだよ
全てはこの荒らしの世迷言
0905デフォルトの名無しさん2013/09/16(月) 18:53:20.42
>>903
日本語でおk
0906デフォルトの名無しさん2013/09/16(月) 18:54:51.70
は?
>>819を良く読め
PBOを使ってるんだから、GL_PIXEL_UNPACK_BUFFER指定してるに決まってるだろ
0907デフォルトの名無しさん2013/09/16(月) 18:57:23.13
>>903
失礼wかみまみた
ピクセルバッファオブジェクトじゃないな、バッファオブジェクトだ
0908デフォルトの名無しさん2013/09/16(月) 19:01:27.05
>>903
嘘つけ!
実際に作るのはglTexImage2DとかglBufferDataを使った時だろ
glGen*は空き番号を返すだけ
0909デフォルトの名無しさん2013/09/16(月) 19:02:24.51
別にpbo使う時でもglBufferDataでバッファのサイズを大きくすれば良いだけじゃん
0910デフォルトの名無しさん2013/09/16(月) 19:08:03.31
>>908
ほい仕様ね

glBindBuffer:
Calling glBindBuffer with target set to one of the accepted symbolic constants and buffer set to the name of a buffer object binds that buffer object name to the target. If no buffer object with name buffer exists, one is created with that name.

テスクチャオブジェクトは、言う通りglTexImage2D時だな
訂正ありがとう

つか、言葉が通じるGL使いが居て良かったわw
0911デフォルトの名無しさん2013/09/16(月) 19:09:16.26
>>909
それ話が変わっちゃうからw
0912デフォルトの名無しさん2013/09/16(月) 19:20:39.96
で何度も質問者の意図を理解してるか聞いて
質問者のレスへのリンクまで張ったのに、PBO使ってるってコメント読んで無いとか?

そんなんで、試したとか出来ないわけないととか言っちゃてたわけ?w
0913デフォルトの名無しさん2013/09/16(月) 19:23:50.90
で、仕様のどこにテクスチャのサイズ変更はできないって書いてあんの?wwwwwww
09148112013/09/16(月) 19:24:08.86
>>906
失礼、事実関係だけ。
参考にしたコードにPBOと書いてあったので>>819はそれを引きずってますが、
実際に使っているのはGL_ARRAY_BUFFERになります。
0915デフォルトの名無しさん2013/09/16(月) 19:24:43.43
>>897とか完全に意味不明だし氏ねばいいのに
0916デフォルトの名無しさん2013/09/16(月) 19:29:04.95
glBindBufferの仕様にGL_PIXEL_UNPACK_BUFFERターゲットの場合
glTexImage2Dは影響を受けると書いてる
影響とは、ポインターは既にあるバッファオブジェクトのバイトオフセットになると

で質問者はPBOを使ってるいる
ならGL_PIXEL_UNPACK_BUFFER指定している
つまり、バッファオブジェクトは新しく作られないから
既にあるバッファサイズを越えたサイズのglTexImage2Dはバッファオーバーするのが当然
(ドライバによっては、指定より大きいサイズのバッファオブジェクトを作って動くかもしれんが、それは環境依存)
0917デフォルトの名無しさん2013/09/16(月) 19:31:06.45
>>915
もっとGL使いとしてのステージwを上げるべきじゃね?w

>>914
後だし情報って奴ですか…w
0918デフォルトの名無しさん2013/09/16(月) 19:32:53.85
質問者はPBO使ってないらしいし
使うにしてもバッファを大きくしておけばバッファオーバーランにはならない

削除しないとテクスチャのサイズが変更できないってことは

ありえなーい
0919デフォルトの名無しさん2013/09/16(月) 19:38:22.86
えーと、バッファオブジェクトはGLが内部で作るものであって自身で作れないんですが…?w
知らないならともかく、説明してるのに調べせずに…w
マジ、こんなレベルのGL使いが語ってたの?

>参考にしたコードにPBOと書いてあったので>>819はそれを引きずってますが、
>実際に使っているのはGL_ARRAY_BUFFERになります。

じゃー、この変の参考の引用間違いが原因じゃねー?
0920デフォルトの名無しさん2013/09/16(月) 19:47:03.29
今日はうんこが柔らかい
09218112013/09/16(月) 19:50:35.64
>>917
まぁ、バッファが関係するのはglTexSubImage2Dの部分だけと考えていましたので
そのへん詳しくは書いていませんでした。

結局のところ、GL_PIXEL_UNPACK_BUFFERをソースに指定してglTexImage2Dを
呼んだ場合、あらかじめバッファ側を拡大しておかなければエラーになる、という
ことですかね?

>>919
一応、そのサンプルコードが使っていたのは最初からGL_ARRAY_BUFFERでした。
関数名がcreatePBOだったというだけで。
0922デフォルトの名無しさん2013/09/16(月) 19:56:03.94
>結局のところ
そうっぽい

とりあえず普通にサイズ変更は出来そうで安心した
0923デフォルトの名無しさん2013/09/16(月) 19:59:44.42
glTexImage2DでGL_INVALID_OPERATIONが起こる場合の仕様では

GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the GL_PIXEL_UNPACK_BUFFER target and the buffer object's data store is currently mapped.

GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the GL_PIXEL_UNPACK_BUFFER target and the data would be unpacked from the buffer object such that the memory reads required would exceed the data store size.

GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the GL_PIXEL_UNPACK_BUFFER target and data is not evenly divisible into the number of bytes needed to store in memory a datum indicated by type.


となっているが(他にもあるけど)、本当にGL_PIXEL_UNPACK_BUFFER指定になってない
って調べた?
人のコードを理解してないように引用するレベルなんて疑ってしまう
0924デフォルトの名無しさん2013/09/16(月) 20:02:48.60
やっぱ変な抽象的なコードで「エラーが起きるんです」なんて言わせないで
エラーが起きるコードをコピペする(させる)べきだな

質問者はそのところ反省してくれ
0925デフォルトの名無しさん2013/09/16(月) 20:03:45.03
>>921
君の理解してる言葉はイマイチ信用できない
GL_ARRAY_BUFFER指定とかじゃなくて、PBOは使ってるの?使ってないの?
って事だと思うけど
0926デフォルトの名無しさん2013/09/16(月) 20:05:36.31
>>921
話し続いてるし、できたらglTexImage2Dのサイズ変更だけをしてエラーを出すコードとか上げれない?
全然違うところが原因かもしれないしさ
0927デフォルトの名無しさん2013/09/16(月) 20:14:53.89
>>921
もっとglBindBufferの動作についても調べると良いよ
だってglBindBufferしてる各内部オブジェクトが、glTexImage2Dで操作されるんだよ
自分ではGL_ARRAY_BUFFER指定のつもりでも、
PBO使ってるなら、内部でGL_PIXEL_UNPACK_BUFFERのオブジェクトになるかも知れないし
(これは完全に推測)
0928デフォルトの名無しさん2013/09/16(月) 20:24:16.54
>>921
>結局のところ、GL_PIXEL_UNPACK_BUFFERをソースに指定してglTexImage2Dを
>呼んだ場合、あらかじめバッファ側を拡大しておかなければエラーになる、という
>ことですかね?
内部のバッファオブジェクトの事を言ってるなら
内部オブジェクトは操作出来ないよ
ドライバ実装まかせ
0929デフォルトの名無しさん2013/09/16(月) 20:37:01.94
>>928
あ?
0930デフォルトの名無しさん2013/09/16(月) 20:38:15.98
本当に解決したいならコード貼れ
0931デフォルトの名無しさん2013/09/16(月) 20:48:36.69
>>929
GLが内部オブジェクトを使って動いているって理解出来ない人は
いちいち反応しないでくれるかな?w
0932デフォルトの名無しさん2013/09/16(月) 20:50:08.43
>>931
い?
0933デフォルトの名無しさん2013/09/16(月) 20:52:36.65
何をこいつ威張ってんの?
09348112013/09/16(月) 20:57:39.96
>>925
>>927
たしかに、そのへんバッファの種類や扱いについて理解があやふやなまま
だったので、コードの方にどう書いたかは確認してみます。
?GL_PIXEL_UNPACK_BUFFERにバッファをbindしたままglTexImage2Dを
呼んでないかという点についてもちゃんと認識していないので、それが
原因の可能性も考えられますね。
0935デフォルトの名無しさん2013/09/16(月) 20:58:56.68
なぜ頑なに再現するコードを出さないのか
0936デフォルトの名無しさん2013/09/16(月) 21:07:17.09
つかPBO使ってるどうか何て直ぐ分かるだろ
PBOを理解してなくとも、ググッてコード検索すれば直ぐに分かるだろ
0937デフォルトの名無しさん2013/09/16(月) 21:11:50.98
正しい仕様は、
glTexImage2DでGL_INVALID_OPERATIONが起こるケースの内容を1つづつ検証してけば良いだけ
エラーの指摘どおりのケースがあったら、それを直して再度チャレンジ
またエラーが出るようなら、同じようにAPIのエラー出てる箇所を調べて修正

エラーの箇所と原因を特定して質問出来ないレベルなら地道にやるしかないよ
0938デフォルトの名無しさん2013/09/16(月) 21:12:59.71
コードを理解しないでコピペで作ろうとする奴いるよな
それでいて少しだけかじった知識で全部理解してるかのように反論してくるっていう
0939デフォルトの名無しさん2013/09/16(月) 21:18:21.44
フォーマットの指定が誤っているとかしょうも無い系エラーがまず疑われる
0940デフォルトの名無しさん2013/09/16(月) 21:22:02.67
スレが荒む前にコピペしておきますね

837 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/15(日) 08:52:21.59
普通に職業グラフィックプログラマはいないのか?
VRAMにどう言う手順でメモリがとられ、サイズの変更ってどういう意味かを考えれば
そう言う発想にすら至らないだろ

glTexImage2Dでテクスチャサイズの変更なんて出来ない
そう言う発想する時点で低レベルを通り越して、GLやらDXを直接触るレベルに至ってないよ

838 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/15(日) 09:06:01.93
例えば、新車を買ったと思え
で、マニュアルを全部熟読したと思え
で、その車で浜から海に突入したと思え

で、言い出してるんだ
マフラーから浸水してエンジン止まってるのに
仕様で車が海に入れないって決まっていればいいのですが…
マニュアル読んでも明記してなくって…

ってレベルだw
0941デフォルトの名無しさん2013/09/16(月) 21:22:39.52
後だし情報、自身のコードあやふや回答で盛り上がってまいりました
0942デフォルトの名無しさん2013/09/16(月) 21:28:33.48
質問者の糞コピペコードで動かなかったから何だっていうんだYO
09438112013/09/16(月) 21:28:47.76
>>935
今は環境もコードも手元にないので。
最初は単に使い方を聞くだけのつもりでしたが、いろいろヒントをもらいましたので
明日確認してみます。

>>937
まぁそこは、それ以前の「glTextImage2Dでサイズを変更するのは正しいやり方なのか?」
というところからですから。おかげでいろいろ勉強になりましたが。
0944デフォルトの名無しさん2013/09/16(月) 21:42:54.48
スレ延びてる割には情報量0だな
0945デフォルトの名無しさん2013/09/16(月) 21:43:51.18
glDeleteTextures(glGenTextureは任意か…)して、
再度glTexImage2D呼んで、新たに作成する以外に方法はない
glTexImage2Dを再度呼べばサイズ変更出来るなんてド素人発想

前のリソースリークしまくって、出来るとか言うなら
どうぞご勝手にw
0946デフォルトの名無しさん2013/09/16(月) 21:45:10.88
glBindBufferでメインメモリではなくPBOを転送元にして
glTexImageすると
転送先テクスチャは再作成されずサイズも変更されない
というトンデモ理論についてはどう思う?
あるいはコピーされずテクスチャのアドレスがPBOのアドレスになるみたいに奴は考えているのかもしれない
0947デフォルトの名無しさん2013/09/16(月) 21:47:34.85
>>945
�tレームやってもメモリリークとかしねーよ
それが普通の挙動
0948デフォルトの名無しさん2013/09/16(月) 21:49:35.84
>glTexImage2Dを再度呼べばサイズ変更出来るなんてド素人発想
なんか表現が違ったw
こうだな

glTexImage2Dを続けて呼べばサイズ変更出来るなんてド素人発想
0949デフォルトの名無しさん2013/09/16(月) 21:52:19.57
>>946
GL内部のバッファオブジェクトとPBOをゴッチャにしか語れないレベルなら黙ってれば?w
0950デフォルトの名無しさん2013/09/16(月) 21:53:59.83
誰かこの荒らしを黙らせろ!
0951デフォルトの名無しさん2013/09/16(月) 21:54:22.01
>>947
普通はVRAM側のリークは、メモリを壊しながら動く
それ続けて自身のアプリを放置して見てろよ?
各所でテクスチャが壊れまくるはずだからw
0952デフォルトの名無しさん2013/09/16(月) 21:57:08.17
机上の空論・・・いやタブレット上の空論だ!!
0953デフォルトの名無しさん2013/09/16(月) 21:57:17.51
BPOとACとJAROをゴッチャにしか語れないレベルなら黙ってれば?w
0954デフォルトの名無しさん2013/09/16(月) 22:02:48.25
エラーになるってのは無理があるから
メモリリークするって話に変えようとしていますね
しないのに
>>951はもはや見苦しい言い訳の域を超えました
0955デフォルトの名無しさん2013/09/16(月) 22:06:24.27
俺は一言もエラーになるなんて言ってないぞ?
続けてglTexImage2Dコールしてもサイズ変更出来る訳無いって言ってるだけ
どこのレスか教授して欲しいねw
寝ぼけて書いてるかもしれんしw

なんか思い込み星人さんと議論してたのか…w
0956デフォルトの名無しさん2013/09/16(月) 22:07:47.42
さあさあ
811以降のレスで、俺と思しき書込みのどこにエラーになるって書いてる?
0957デフォルトの名無しさん2013/09/16(月) 22:12:10.10
あ!?やんのかゴルァ!!
0958デフォルトの名無しさん2013/09/16(月) 22:14:36.19
糞スレ
0959デフォルトの名無しさん2013/09/16(月) 22:18:39.35
あースマンスマン
技術論議とかけ離れたね

リークしないって、
例えばVRAMサイズ(GPUメモリからフレームバッファやら引い残り等)を割り出して
そのサイズ分試していってるのか?

俺は昔業務で試したが、ものの見事にVRAMサイズを超えた辺りで
キャラのテクスチャとか壊れだしだぞ?

glTexImage2Dを続けて呼ぶと、古いテクスチャは破棄される
そう言う挙動はドライバ依存で、GLの仕様にのってないから
出来る、リークしないなんて間違いだね
0960デフォルトの名無しさん2013/09/16(月) 22:23:59.87
ドライバ依存ならリークする・しないと言い切るのが間違いなのでは
0961デフォルトの名無しさん2013/09/16(月) 22:24:41.24
ゆとりをバカにしながら昔の思い出の中で生きてろよ
0962デフォルトの名無しさん2013/09/16(月) 22:27:09.72
リークする環境があった時点で
リークを想定した汎用的な処理をしなければならず
間違った処理と言えるじゃん

自分の環境で動く&それで良い人は
好きにすれば、とも言ってるし
0963デフォルトの名無しさん2013/09/16(月) 22:28:02.73
To change texels in an already existing 2d texture, use glTexSubImage2D:

glBindTexture(GL_TEXTURE_2D, textureID); //A texture you have already created storage for
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_BGRA, GL_UNSIGNED_BYTE, pixels);

glTexImage2D creates the storage for the texture, defining the size/format and removing all previous pixel data. glTexSubImage2D only modifies pixel data within the texture. It can be used to update all the texels, or simply a portion of them.

REMOVING ALL PREVIOUS PIXEL DATA!!!!
Hahahahaha!!!!!
0964デフォルトの名無しさん2013/09/16(月) 22:28:36.75
http://www.opengl.org/wiki/Common_Mistakes#Updating_a_texture
0965デフォルトの名無しさん2013/09/16(月) 22:30:15.02
別に出来ない事をバカにしてるんじゃないのよ
こっちが情報提供してるのに、
意味不明とか反論とか勝手な人の発言変換とかして自分を曲げないじゃん

業務とかで、隠してるつもりでも
先輩や上司はそう言うの分かるのよ

かわいそうだなーってw
0966デフォルトの名無しさん2013/09/16(月) 22:31:19.84
やっぱ普通にできるよなあ
どう考えても前のデータを残す実装に意味があるとは思えんし
0967デフォルトの名無しさん2013/09/16(月) 22:32:17.38
>>959
その昔のヤツもなんか特殊なアロケートしてたんじゃないのかね?
0968デフォルトの名無しさん2013/09/16(月) 22:34:58.80
エラーが出て(コマンドが失敗する)
サイズ変更に失敗する
どちらも似たような言い方なのにソコを突くか普通
重箱の隅をつつくような話だな
0969デフォルトの名無しさん2013/09/16(月) 22:41:47.27
リークする実装って何処にあんだよ
OpenGL.orgのwikiの中の人も前のピクセルデータは削除して当然だと思っているのに
0970デフォルトの名無しさん2013/09/16(月) 22:44:34.76
これだから老害は
0971デフォルトの名無しさん2013/09/16(月) 22:46:54.02
そうwikiを編集した人がそう思ってるだけで
クロノスグループの仕様には明記してない
だからドライバがそう言う実装になってなくとも文句は言えない
つか実際にあったケースだし
0972デフォルトの名無しさん2013/09/16(月) 22:48:20.97
>>971
もう実際にあったケースなんて書き込みは意味が無いだろ
そのグラボの型とドライバのバージョンと再現するコードまで示してくれ
0973デフォルトの名無しさん2013/09/16(月) 22:55:49.49
前の職場だし、教務用の環境だから書く訳にはいかない

コード的には、ミップマップのテストしてて
ミップレベル毎のテクスチャ作成をケチって
カメラとキャラの距離で、動的にglTexImage2Dを何度も読んでたら起こった
glDeleteTexture(とglGenTexture)を挟むと、テクスチャは壊れなくなった
って内容だね
0974デフォルトの名無しさん2013/09/16(月) 22:56:50.68
テクスチャ画像を拡大したい時ってどんな時なんですか?
普通はレベル分のMipmap画像を用意したり、GL_GENERATE_MIPMAP? 指定して生成したりするんじゃないんですか?
0975デフォルトの名無しさん2013/09/16(月) 23:02:29.02
俺の時は、VRAM使用をケチる目的で
ミップレベル指定分のピクセル作成をやめて
キャラがカメラの近くの時にミップマップ無しの大きなテクスチャ、
遠のく時にミップマップ無しの小さなテクスチャを作ろうとした
(生成速度の遅さはカバー出来るアプリ仕様だったため)

まードライバ会社と英語のやりとりして、
その方法は駄目だ、ミップマップを作れって返事が来て
ドライバ修正とかにはならなかったがw
0976デフォルトの名無しさん2013/09/16(月) 23:07:05.80
「英語の」とわざわざ言うところがなんとも
0977デフォルトの名無しさん2013/09/16(月) 23:16:49.43
ImmutableのテクスチャがあるならMutableのテクスチャがあるのは当然
0978デフォルトの名無しさん2013/09/16(月) 23:26:16.74
前のテクスチャをクリアしないのはパフォーマンス的には何のメリットもない
いつそんなものが存在したのか知らないが本当に糞実装だな
0979デフォルトの名無しさん2013/09/17(火) 13:19:16.71
OpenGLスレ Part20
http://toro.2ch.net/test/read.cgi/tech/1379391344/
0980デフォルトの名無しさん2013/09/17(火) 13:40:10.42
>>979
スレ立て乙
0981デフォルトの名無しさん2013/09/17(火) 14:11:51.87
糞スレ埋め
0982デフォルトの名無しさん2013/09/17(火) 14:15:55.42
なんで GLSL は vec4 で、OpenCL は float4 なんだ。
なんで GLSL には mat4 があって、OpenCL には float4x4 が無いんだ。
0983デフォルトの名無しさん2013/09/17(火) 15:53:37.95
hint
需要と供給
0984デフォルトの名無しさん2013/09/17(火) 18:16:59.20
glslじゃなくてhlsl寄りなんだろう
0985デフォルトの名無しさん2013/09/17(火) 18:24:28.35
あとfloat16を思い出してあげてください
09868112013/09/17(火) 22:55:33.31
とりあえず報告です。

glTexImage2Dを呼ぶ時点で直接or間接にGL_PIXEL_UNPACK_BUFFERを使用して
いるのではないかと推測された方がいましたが、結果としてその通りでした。

// 描画時
glBindBuffer(GL_PIXEL_UNPACK_BUFFER,...)
glBindTexture(GL_TEXTURE_2D,...)
glTexSubImage2D(GL_TEXTURE_2D,...)
// ←ここでglBindBuffer(,0)をしていない

〜
〜

// サイズ変更時
// ←バッファを使用していないつもりだったがbindされたまま
glTexImage2D() // ←GL_INVALID_OPERATION

glTexSubImage2Dの後でglBindBuffer(GL_PIXEL_UNPACK_BUFFER,0)するよう修正
することで、どのサイズでも症状は出なくなりました。
改めてドキュメントを読み直したところ、どうやらこれに該当していたようですね。

GL_INVALID_OPERATION is generated if a non-zero buffer object name is bound to the
GL_PIXEL_UNPACK_BUFFER target and the data would be unpacked from the buffer
object such that the memory reads required would exceed the data store size.

アドバイスありがとうございました。
0987デフォルトの名無しさん2013/09/18(水) 00:27:06.25
おん、すっきりした

まとめ
glTexImage2Dでサイズ変更はできる(もちろん最大サイズとかメモリとか許す範囲で)
ただしglなんちゃらStrageとかピクセルバッファオブジェクトとか使って特殊なアロケーションしてる場合はダメ
0988デフォルトの名無しさん2013/09/18(水) 07:08:28.01
おお
てっきり
嵐だと思っていたが
解決したのか
0989デフォルトの名無しさん2013/09/18(水) 07:45:27.17
異常にスレ延びてると思って来てみたら基地外粘着だったでござる。
0990デフォルトの名無しさん2013/09/18(水) 08:19:00.44
>>986
GLint pixel_unpack_buffer_binding;
glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING, &pixel_unpack_buffer_binding);
assert(pixel_unpack_buffer_binding==0);

のようにglTexImage2Dする前にバインディングを確認するコードを置いておくといいのではないでしょうか。
0991デフォルトの名無しさん2013/09/18(水) 08:24:33.93
晒しておきますね

837 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/15(日) 08:52:21.59
普通に職業グラフィックプログラマはいないのか?
VRAMにどう言う手順でメモリがとられ、サイズの変更ってどういう意味かを考えれば
そう言う発想にすら至らないだろ

glTexImage2Dでテクスチャサイズの変更なんて出来ない
そう言う発想する時点で低レベルを通り越して、GLやらDXを直接触るレベルに至ってないよ

838 名前:デフォルトの名無しさん[sage] 投稿日:2013/09/15(日) 09:06:01.93
例えば、新車を買ったと思え
で、マニュアルを全部熟読したと思え
で、その車で浜から海に突入したと思え

で、言い出してるんだ
マフラーから浸水してエンジン止まってるのに
仕様で車が海に入れないって決まっていればいいのですが…
マニュアル読んでも明記してなくって…

ってレベルだw
0992デフォルトの名無しさん2013/09/18(水) 08:27:30.54
キチガイ自演マッチポンプすれ
レス数が950を超えています。1000を超えると書き込みができなくなります。