5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

OpenGLスレ Part19

1 :デフォルトの名無しさん: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/

2 :デフォルトの名無しさん: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シリーズ

3 :デフォルトの名無しさん: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 (青本)

4 :デフォルトの名無しさん: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/

5 :デフォルトの名無しさん: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落ち)

6 :デフォルトの名無しさん:2012/11/28(水) 06:31:29.87
おつおつ

7 :デフォルトの名無しさん:2012/11/28(水) 17:26:03.79
機能の整数テクスチャーへの書き込みを質問した者だけど
翻訳された4.0の仕様書のglReadPixelsとかglClampColorの項目を何回読んでも理解出来なかったので
ギブアップして公式の4.2の仕様書を読んだら加筆訂正されていてワロタ。すげーわかりやすい
やっぱり原文からして意味不明だったのね・・・
結局全パターンについてテストケースを書いて1つずつ確認して言ったら
あちこち間違えまくっていたので修正したら思った通りの動作だった
あとAMDのGPUだとglColorClampが無視される。
つまり固定小数バッファーの時は必ずクランプされ(まあ当然だ)、
浮動小数バッファーと整数バッファーの時はまったくクランプされない。
(そのままの値が取得できる)
浮動小数バッファーのクランプ設定は使いそうな気がするけど、まあいいや
C#のOpenTKが内部で握りつぶしているのかも

8 :デフォルトの名無しさん:2012/11/29(木) 10:31:34.70
むむ、データフォーマットをGL_FLOATにした上で、ピクセルシェーダで処理をした結果を
戻させても内部では8bitで処理されてる?
例えばフラグメントシェーダで単色グラデーションを作ってGL_FLOATで吐き出させても
255段の階段が見えてしまってるんだけど、俺がどこかでミスってる?それともこういうもの?

9 :デフォルトの名無しさん:2012/11/29(木) 11:29:51.76
ディザリング有効にしてるか

10 :デフォルトの名無しさん:2012/11/29(木) 12:48:35.95
>>8
んなわけない
それはinternalFormatにRGB8(=固定小数8bit)を指定した時の動作
ちゃんとRGB8fにしてるか? 
可能性は低いがGPUが浮動小数バッファーに対応してなくて固定小数バッファーを使った可能性もある
glTexLevelParameterでGL_TEXTURE_INTERNAL_FORMATを指定して実際に確保した内部フォーマットを確認してみるがよろし

11 :デフォルトの名無しさん:2012/11/29(木) 13:08:58.88
✘ RGB8f
○ RGB16f, RGB32f
ってかGL_FLOATって何だよ。glGetTexImageのformatか?
それはテクスチャーをCPU側にコピーする時の(CPU側の)形式なので、
コピー元のテクスチャーをRGB8で作っていたとしたらそもそも255階調しか存在しない

12 :デフォルトの名無しさん:2012/11/29(木) 14:36:30.00
このゲームわざわざ50vs50である必要がないよね
仲間と協力してプレーしている感がまったくない
クランもないし・・・
CBだけでお腹いっぱいになってしまった

13 :デフォルトの名無しさん:2012/11/29(木) 14:40:26.44
FEZスレの誤爆か。

14 :デフォルトの名無しさん:2012/11/29(木) 19:47:27.36
>>10
レスありがとう
やっぱりそっちが問題だったのね、そっちはどこかの説明で色の数とだけあったから
そこで指定できるのは成分数だけかと思った
確認してきます

15 :デフォルトの名無しさん:2012/11/30(金) 07:52:58.27
OSX Mountain Lionな環境な人から情報求む。

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

他の人どう? 暇がある人は試してみて。

16 :デフォルトの名無しさん:2012/11/30(金) 21:59:30.36
GUIツールキット側が対応してないのかもな
GLFWとかQtとかなら行けるんじゃないか?

あとはmacでOpenGLしてそうな人に聞くとかか
ttp://marina.sys.wakayama-u.ac.jp/~tokoi/?blogcategory=GLFW

17 :デフォルトの名無しさん:2012/12/01(土) 05:02:45.24
>>15
Python起動するみたいだけどスクリプト(gl3w_gen.py)は正しく実行できてるの?

18 :デフォルトの名無しさん:2012/12/01(土) 09:34:48.38
>>16
公式ページによると、標準のGLUTでいけるみたいなことが書いてあるんだけど、
それができずに困ってる。
ちなみにQtでも試してみたけど、ダメでした……。

>>15
gl3w_gen.pyは正しく実行できてる。
というかこれを実行しないとライブラリのCファイルが取得できないので。

19 :デフォルトの名無しさん:2012/12/01(土) 17:02:20.83
馬鹿には無理

20 :デフォルトの名無しさん:2012/12/01(土) 17:11:56.68
まあ情報が多いWindowsでやるのが楽ですわな

21 :デフォルトの名無しさん:2012/12/01(土) 17:14:51.85
マカーには無理

22 :デフォルトの名無しさん:2012/12/02(日) 00:43:54.38
Androidで地図アプリっぽいのを作りたいと思います。数十個のjpg画像をタイル状に配して2本指で拡大したりするものです。
glDrawTexfOESで画像描画するとGPUが動員されて速いそうなので、主にこれで2Dだけで行きたいんですが、座標の原点が左下なので換算が少々面倒です。左上にできませんか?
もう一つ。画面に入る場所のタイルだけ毎フレームglDrawTexfOESするのが普通ですか?マップ済みのを簡単にスクロール・拡大したりできないかと思って

23 :デフォルトの名無しさん:2012/12/02(日) 01:06:04.14
>>18
OSX Mountain Lionで試してみたけど通らない
失敗する原因はglGetIntegervでのバージョン取得が上手くいってないからっぽい
なぜかはよくわからない

24 :デフォルトの名無しさん:2012/12/02(日) 01:43:05.64
>>22
射影変換の後にY軸を反転する変換をすれば良いんじゃね
テクスチャ座標もあわせて変換しとかないといかんな

25 :デフォルトの名無しさん:2012/12/03(月) 04:45:22.03
>>23
試してくれたのね。ありがとう。
なんでなんだろうね。何か動きがあるか、しばらく待った方がいいかな。

26 :デフォルトの名無しさん:2012/12/03(月) 23:22:18.24
初期化で失敗する原因はもっぱらコンテキストが出来上がる前になんにゃらかんやらしちゃってる

27 :デフォルトの名無しさん: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
となってほしいのですが何か設定が足りないのでしょうか?

28 :27:2012/12/09(日) 08:24:34.33
ちなみにカラーバッファを読み込もうとしても同様のことが起こります。

29 :デフォルトの名無しさん:2012/12/09(日) 09:46:55.83
GL_PACK_ALIGNMENTで1を指定してるからじゃないかな?
GL_PACK_ROW_LENGTHで10でやってみたら?
よくわからんけど

30 :27:2012/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をずらしてもなぜか同じ結果です。

31 :デフォルトの名無しさん:2012/12/09(日) 10:17:00.88
X GLubyte sb[10][10];
○ GLubyte sb[10*10];

32 :27:2012/12/09(日) 10:38:59.30
>>31
それも試しましたが同じでした。

33 :デフォルトの名無しさん:2012/12/09(日) 10:46:39.65
>>31
先頭アドレスが同じなら入ってくるデータは同じだよね
あとでアクセスするときに意味が変わるだけで

34 :デフォルトの名無しさん:2012/12/09(日) 12:51:32.04
Open GL ES 1.0で、煙のような表現をやりたくて、
テクスチャを読み込ませ背景に重ね合わせたんですが、
なぜか微細な透過部分がグレー色になってしまいます
そういう仕様なんでしょうか?

35 :デフォルトの名無しさん:2012/12/09(日) 13:04:23.55
はい、その通りです

36 :デフォルトの名無しさん:2012/12/09(日) 13:13:27.96
いいえ、違います

37 :34:2012/12/09(日) 14:14:27.58
あきらめずにググってたら解決方法見つかりました

>>35-36
どうもありがとうございました

38 :デフォルトの名無しさん:2012/12/09(日) 14:16:52.79
答えをy/nで聞き、自己解決しても原因・対策を書いていかない
まるで役に立たない書き込みだな

39 :デフォルトの名無しさん:2012/12/09(日) 14:29:06.05
まあ、どこかに一度アウトプットすることで整理されることもあるよね

40 :デフォルトの名無しさん:2012/12/09(日) 15:04:50.78
>>37>>35,36に対するイヤミだろw
糞みたいに役に立たない回答ありがとうございました(死ね)
みたいな意味だと思うわw

41 :デフォルトの名無しさん:2012/12/10(月) 10:35:29.22
いやまぁ、>35、>36を見て自分で調べるしかないと覚悟したのかも知れん。
まぁでも、>37を書くなら原因くらい書いていって欲しかったがな。

42 :デフォルトの名無しさん:2012/12/10(月) 20:28:56.34
まあエスパーじゃないと>>34には答えられんわな

43 :デフォルトの名無しさん:2012/12/10(月) 22:15:27.89
どうせ0.375だろうけどな

44 :デフォルトの名無しさん:2012/12/12(水) 12:21:51.78
カラーバッファーのマスクについて教えてください
複数のカラーバッファーのマスクを個別に変更できる必要はありますか?
OpenGLの仕様上個別に制御可能ですが、こんな機能使わないと思うので
一括して変更にしか対応しない仕様にしようと思います

45 :デフォルトの名無しさん:2012/12/12(水) 18:25:12.07
使ったことはある
画面全体の赤成分だけとか緑成分だけとかを反転させたかったときに
カラーマスクをかけて glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO) で塗り潰した

46 :デフォルトの名無しさん:2012/12/12(水) 19:28:40.95
>>34
アルファブレンドしろよ
というか懐かしいな
20年前学生だったとき暇つぶしにやったよ

47 :44:2012/12/12(水) 19:59:14.05
>>45
上の書き方だとそう取られてもしょうがない(反省)
複数バッファー(COLOR_ATTACHEMENT0,1,2,3...)をアタッチした時に、
その中の1つのバッファーだけカラーマスクを変えたい事がありますかという質問です。
そういう需要はないと踏44んでいます

48 :44:2012/12/12(水) 20:05:24.71
あともう1つ
αブレンドってシェーダー&オフラインレンダリングの時代にはぶっちゃけもう必要ないですよね?
デフォルトのRGBのフレームバッファーに対する基本的な合成がせいぜい6種類ぐらいあれば十分で、
オフラインのRGBAバッファーに対する合成は必要無いですよね?
Aチャネルの扱いとか定義しろと言われても困る

49 :デフォルトの名無しさん:2012/12/12(水) 20:38:27.47
必要ないときたかペイントツールとか思慮の外なんだろうな超絶頭悪いんだなお前
テスト仕様書漏れまくりだろ存在が人災レベルのクズ

50 :デフォルトの名無しさん:2012/12/12(水) 21:24:02.10
アルファブレンドが必要ないとかありえませんわ
透明な物体を使わないってことだろ
ありえませんわ

51 :デフォルトの名無しさん:2012/12/12(水) 22:05:13.71
ヌルポブレンド

52 :デフォルトの名無しさん:2012/12/14(金) 02:59:25.85
>>48
はい、シェーダーの時代なのでぶっちゃけ全部不透明オブジェクトです
オフラインレンダリングの時代なのでぶっちゃけOpenGLも必要ないです

53 :デフォルトの名無しさん:2012/12/15(土) 01:04:45.11
alpha to coverageでお手軽半透明マジおすすめ

54 :デフォルトの名無しさん:2012/12/15(土) 02:07:18.15
Windows で動く簡単な3Dプログラムを作りたいんだけど、何で作るのがおすすめ?
できれば Java でやりたいんだけど。

具体的には、平面のフロアマップを、タッチパネルで回転したり、拡大したりするだけ。

55 :デフォルトの名無しさん:2012/12/15(土) 02:13:40.57
Processing どうぞ。

56 :デフォルトの名無しさん:2012/12/15(土) 02:25:21.73
>>55
初めて聞きましたわ。なんだか自由度が低そうですわ。

57 :デフォルトの名無しさん:2012/12/15(土) 02:28:07.51
フロアマップ出すだけとはいえ、画像管理したり、マップ切り替えたり、
UI作ったりしなきゃいけないので、そこそこ色々できるのがいいです。ごめんなさい。

58 :デフォルトの名無しさん:2012/12/15(土) 02:33:35.19
とりあえず使ってみてから文句言えや

59 :デフォルトの名無しさん:2012/12/15(土) 02:45:26.72
>>58
確かにそれは失礼した。明日使ってみる。

内部的にはJavaなのねこれ。
作った後誰かにメンテ託さないといけないので、
なるべくメジャーな言語がいいんだけど、ここまでJavaっぽいならありかもね。

60 :デフォルトの名無しさん:2012/12/15(土) 04:51:03.39
うにty

61 :デフォルトの名無しさん:2012/12/15(土) 12:50:23.18
UnityってWindowsでも動くんだ。いいかも。

62 :デフォルトの名無しさん: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();

}

63 :デフォルトの名無しさん:2012/12/15(土) 17:53:42.21
radian

64 :デフォルトの名無しさん:2012/12/15(土) 17:56:39.70
>>62
このコードだとdisplay()が呼ばれるたびにY軸中心の回転変換が加えられてしまう
glLoadIdentity()とかを使って行列を毎回初期化してください
話はそれからだ

65 :62:2012/12/15(土) 18:06:23.80
>>64
なるほど。
glLoadIdentity()を追加したところ、正常とおもわれる動作で90度回転でXY平面からは見えず
180度回転で反転となりました。
ウィンドウが開くまでに、内部的にdisplay()が三回呼び出されていて回転変換が重なってしまったた。
ということでしょうか。
ご示唆ありがとうございました

66 :デフォルトの名無しさん:2012/12/16(日) 00:56:02.05
AndroidのアプリをOpenGLで作っていて初心者なんですがテクスチャを表示するとき
その表示しようとした部分だけ白くなる原因ってサイズを2の累乗にしなきゃいけないってこと
以外にどんなものがあります?

あとアルファ値を有効にして表示するのは
glEnable(GL10.GL_ALPHA_TEST);
を使えばokですか?

67 :デフォルトの名無しさん:2012/12/16(日) 01:35:19.58
サンプラパラメータのGL_TEXTURE_MIN_FILTERの初期値がGL_NEAREST_MIPMAP_LINEARなので
ミップマップなしのテクスチャだとおかしなことになりそうだな

68 :デフォルトの名無しさん:2012/12/16(日) 03:03:29.26
テクスチャをDISABLEしてるとなる

69 :デフォルトの名無しさん:2012/12/16(日) 03:19:07.39
>>66
なんのアルファ値を有効にしたいのか分からないけど、
テクスチャのアルファブレンドとALPHA_TESTは違う

70 :デフォルトの名無しさん:2012/12/16(日) 05:04:54.61
Javaには無理

71 :デフォルトの名無しさん:2012/12/16(日) 20:38:32.79
C → C++ → JAVA → C++

これが正しい進み方

72 :デフォルトの名無しさん:2012/12/16(日) 21:03:08.66
Javaなんて糞言語三角コーナーに投げ捨てろ
代わりにC#を使ったほうが便利だ

73 :デフォルトの名無しさん:2012/12/16(日) 21:31:45.98
ぷぷっ

74 :デフォルトの名無しさん:2012/12/16(日) 21:39:33.17
C#って何ができるの?

75 :デフォルトの名無しさん:2012/12/16(日) 23:38:18.21
何故C++じゃなくてC#なのか全く意味不明。

76 :デフォルトの名無しさん:2012/12/17(月) 00:04:55.91
C++
 ++

77 :デフォルトの名無しさん:2012/12/17(月) 00:31:18.84
JavaじゃなくてC#って書いてあるのがいつの間にかC++じゃなくてC#ということになってるのが意味不明です

78 :デフォルトの名無しさん:2012/12/17(月) 01:20:02.09
C++から一度はJAVAに移るが例外処理のウザさと実行速度の遅さに
ウンザリして結局C++に戻るんですね、わかります。

79 :デフォルトの名無しさん:2012/12/17(月) 01:43:42.22
C丼

80 :デフォルトの名無しさん:2012/12/17(月) 08:51:08.21
OpenGLを使う上でC#の優位性が全く存在しないのに、
役立たずを勧める意図は何なんだろう?

81 :デフォルトの名無しさん:2012/12/17(月) 19:40:57.36
OpenGL以外の部分で優位だからじゃないの?

82 :デフォルトの名無しさん:2012/12/17(月) 19:58:49.62
その通り
C++だとGUI作るのが面倒すぎる

83 :デフォルトの名無しさん:2012/12/17(月) 20:08:19.83
qtgl

84 :デフォルトの名無しさん:2012/12/17(月) 20:53:23.10
GUIといえばJAVAとC#だけどC++でもGUIライブラリ使えば
それなりに楽できるんじゃないかな?

85 :デフォルトの名無しさん:2012/12/17(月) 20:59:17.21
なんで今更C++なんて覚えなきゃいけないんですか?時代遅れですよね?

86 :デフォルトの名無しさん:2012/12/17(月) 21:23:27.86
C#の場合C++でライブラリ書いて呼び出すのも比較的簡単だし
え?SWIG?

87 :デフォルトの名無しさん:2012/12/17(月) 21:25:45.98
Fortran2003にしましょう

88 :デフォルトの名無しさん:2012/12/17(月) 21:27:32.39
今更と思うのなら、自分の使っているアプリを見回してみるいい。
OS、アプリ、ゲームと、ことごとくC/C++で出来ている。
C#で出来ている物といえば、手抜きっぽい小規模なプログラムばかりだ。

89 :デフォルトの名無しさん:2012/12/17(月) 21:31:56.57
手抜きで間に合うのなら手抜きでいいんだよ

90 :デフォルトの名無しさん:2012/12/17(月) 21:36:14.46
VC#が神すぎてQtとかうんこに見えてくる

91 :デフォルトの名無しさん:2012/12/17(月) 21:37:45.09
お前らOpenGLの話しろよ(´・ω・`)

92 :デフォルトの名無しさん:2012/12/17(月) 21:38:12.23
GUIなんて自作しろよ
.NETFRAMEWORKはモッサリで駄目だ

93 :デフォルトの名無しさん:2012/12/17(月) 21:43:39.99
C#でGUIって、OpenGLで描画したものと整合性がとれないだろう。
だからみっともないユーティリティ擬きしか作れないんだよ。

94 :デフォルトの名無しさん:2012/12/17(月) 21:49:03.39
C#使ったことないならでたらめなこと言わないほうが良いよ
恥かくのが趣味なら止めないが
ttp://sky.geocities.jp/freakish_osprey/opengl/images/Demo_MQOViewer.png

95 :デフォルトの名無しさん:2012/12/17(月) 21:50:32.27
まずリンク先がデタラメだよね。

96 :デフォルトの名無しさん:2012/12/17(月) 21:52:41.88
結局、OpenGLでまともにGUIをやろうと思ったら、
標準で提供されているRADツールなど何の役にも立たない。

97 :デフォルトの名無しさん:2012/12/17(月) 21:56:38.38
>>85
なんで今更歩くことなんて覚えなきゃいけないんですか?時代遅れですよね?
っていって足を切り落とされるお前の赤ちゃんがかわいそう

98 :デフォルトの名無しさん:2012/12/17(月) 21:57:31.39
他のGUIライブラリも何の役にも立たないけどね
自作しなければならない部分はあるが、そうでない部分をRADでとても楽させてもらえるのが良いね

99 :デフォルトの名無しさん:2012/12/17(月) 21:58:43.57
通常のGUIコンポーネントの一部にOpenGLで描画したいって需要もあるんだよ

100 :デフォルトの名無しさん:2012/12/17(月) 22:00:40.13
むしろそれがほとんどじゃないか?

101 :デフォルトの名無しさん:2012/12/17(月) 22:02:02.23
売り物にならないようなユーティリティだとそんな感じだね。

102 :デフォルトの名無しさん:2012/12/17(月) 22:04:17.02
C#をまともに活用しようとすると、C++でごりごりライブラリを書いていかないといけないのが悲しいところ。
Javaも同様。

103 :デフォルトの名無しさん:2012/12/17(月) 22:04:34.86
売り物にならないというのは例えばこういう感じですかな?
ttp://www.quatouch.com/products/hisui/

Qtなんかはこれより低機能なのでとても売り物になりませんね

104 :デフォルトの名無しさん:2012/12/17(月) 22:07:16.45
売り物にならないユーティリティって煽るけど、ユーザーが金払わなくても企業が払ってくれればそれでいい

105 :デフォルトの名無しさん:2012/12/17(月) 22:08:18.77
C#のRADもQtも同様に使い物にならないよ。
まともな物を作ろうと思ったら他力本願じゃ無理なんだよ。

106 :デフォルトの名無しさん:2012/12/17(月) 22:08:29.66
とりあえず第三者に売り物にならないとか言われてもなあ

107 :デフォルトの名無しさん:2012/12/17(月) 22:08:58.41
使い物になるよ
自力でやる以外の部分がとても楽になるよ

108 :デフォルトの名無しさん:2012/12/17(月) 22:11:37.32
目的とする物が小規模で見た目を気にせず楽が出来れば良い -> C#
そういう選択肢は否定するものではない。

109 :デフォルトの名無しさん:2012/12/17(月) 22:15:03.17
短時間でボタンを並べて計算機を作れというお題に、C++とC#のどっちを使うかと聞かれたらどうする。
C#を選ぶだろう。
つまり、そういうことだ。

110 :デフォルトの名無しさん:2012/12/17(月) 22:21:44.15
Delphiとか言ってみる。

111 :デフォルトの名無しさん:2012/12/17(月) 22:26:55.95
Delphiの開発者がMSに引き抜かれて作ったのがVC#

112 :デフォルトの名無しさん:2012/12/17(月) 22:43:58.94
Lily C++ GUI Library

113 :デフォルトの名無しさん:2012/12/17(月) 23:00:07.88
短時間でボタンを並べて計算機を作れというお題に、C++とC#のどっちを使うかと聞かれたらどうする。
C++を選ぶだろう。

114 :デフォルトの名無しさん:2012/12/17(月) 23:08:06.87
その場合、OSを作れというお題にするべきだろう。

115 :デフォルトの名無しさん:2012/12/17(月) 23:10:15.11
自分が言語やライブラリ選べる立場なら好きなの使えばいいんじゃない

116 :デフォルトの名無しさん:2012/12/18(火) 00:18:56.70
>114
お前OSを日常的に作ってるのか?
比べるなら日常的に作ってるものが如何に効率的に作れるかだろが

117 :デフォルトの名無しさん:2012/12/18(火) 00:36:25.65
>>116
ドライバー作ってますが何か?

118 :片山博文MZボット ◆0lBZNi.Q7evd :2012/12/18(火) 00:42:44.14
>>116 ReactOSというOSの開発に日常的に携わっています。

119 :デフォルトの名無しさん:2012/12/18(火) 01:02:32.34
そんな売り物にならない産廃作ってどうするの

120 :デフォルトの名無しさん:2012/12/18(火) 03:35:28.54
>>119 売り物にならないものでも、高額寄付の対象になったりしてあれこれお金の流れが変わるんですよ。
NPO「ReactOSで無料日本語OSを作る会」なんて設立したいと考えています。

121 :デフォルトの名無しさん:2012/12/18(火) 08:30:25.31
計算機を作っても当然のごとく売り物にはならないけどね。

122 :デフォルトの名無しさん:2012/12/18(火) 09:10:10.35
>>99
それ、OpenGLじゃなくてよくね?

123 :デフォルトの名無しさん:2012/12/18(火) 10:06:21.76
お前OpenGL使ったことないだろ

124 :デフォルトの名無しさん:2012/12/18(火) 10:09:43.54
OpenGLでプログラムを組もうとすると、計算系のライブラリの整備が必要。
SSE2やNEONのインラインアセンブラや組み込み関数が使えない言語は問題外だ。

125 :デフォルトの名無しさん:2012/12/18(火) 13:55:05.92
最適化が必要なとこだけネイティブに逃がしてあとは楽しよう、でええやん

126 :デフォルトの名無しさん:2012/12/18(火) 15:32:12.27
OpenCLとかじゃあかんの?

127 :デフォルトの名無しさん:2012/12/18(火) 15:59:45.41
演算のたびにネイティブと行き来していたら、
拡張命令を利用するメリットが消失する。
必要な部分を逃がしたらスタートアップ部分しか残らないぞ。

128 :デフォルトの名無しさん:2012/12/18(火) 16:09:37.88
プログラム中すべての演算をSIMDにしなきゃ発狂する病気でも患ってるのけ?

129 :デフォルトの名無しさん:2012/12/18(火) 19:27:06.15
最適化の必要頻度の低い単純な演算でも、
C/C++なら拡張命令を使ったコードをコンパイラが勝手に生成してくれる。
便利な世の中になったものだ。

130 :デフォルトの名無しさん:2012/12/18(火) 20:44:30.19
OpenGL を動かすデバイス(CPU統合型のGPUや、外部カードのGPUなど)を
プログラムから設定する方法はあるでしょうか。

131 :デフォルトの名無しさん:2012/12/18(火) 20:54:37.66
そもそも初期化時にどこに関連づけるか設定しているはずだが?

132 :デフォルトの名無しさん:2012/12/18(火) 20:56:10.69
OpenGL 4.3 キター

133 :130:2012/12/18(火) 21:19:46.50
>>131
え?

適当にピクセルフォーマットを設定し、
レンダリングコンテキストを作成して適用すれば、
それで OpenGL の関数が使えてレンダリングできてしまうのですが・・・

134 :デフォルトの名無しさん:2012/12/18(火) 21:34:22.93
コンテキストがデバイスと紐付けされているだろう。
何のために関連づけていると思っているんだ?
今まで意味も分からずにやってたのか?

135 :130:2012/12/18(火) 22:44:58.13
>>134
ごめんなさい、意味がよく分からないです。

wglCreateContext 関数と wglMakeCurrent 関数によって、
HGLRC と HDC が紐付けされるという意味でしょうか?

136 :デフォルトの名無しさん:2012/12/18(火) 23:05:25.17
HDCのDC部分の正式名称を声を出して読み上げろ。

137 :デフォルトの名無しさん:2012/12/18(火) 23:25:13.77
複数GPUがある場合の指定方法を聞いていると思うが……

WGL_NV_gpu_affinity とか使ったことないから知らん。

138 :デフォルトの名無しさん:2012/12/18(火) 23:41:52.16
だから最初にデバイスを指定して初期化しているだろう。
なんでそんなに頭が悪いの?

139 :デフォルトの名無しさん:2012/12/18(火) 23:44:53.58
この辺りの話しかな?
ttp://watery.dip.jp/slash/archives/1062

140 :デフォルトの名無しさん:2012/12/19(水) 00:22:15.46
コピペ野郎は腐れゴミ
意味を理解して使わないってどんな気分なんだろうか

141 :デフォルトの名無しさん:2012/12/19(水) 03:58:35.99
うごきゃいいんだよ

142 :130:2012/12/19(水) 07:10:48.61
>>138
CreateWindow 関数でウィンドウを作ってから
wglMakeCurrent 関数でレンダリングコンテキストと
そのウィンドウのデバイスコンテキストとを紐づけるまで、
レンダリングをするデバイスを選んでいる箇所は見当たりません。

例えば私のPCにはグラフィックス表示用デバイスとして

143 :130:2012/12/19(水) 07:13:34.64
途中でレスしてしまいました。
続きです。

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

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

もしそうなら、今どちらのデバイスでレンダリングしているのか、
という事が分かる関数はあるのでしょうか。

144 :デフォルトの名無しさん:2012/12/19(水) 08:02:32.00
>>143
少なくとも標準APIでの指定は出来ないと思います

どちらのデバイスを使っているかは glGetString()すれば
判ります

145 :130:2012/12/19(水) 12:34:22.41
>>144
ありがとうございました。

146 :デフォルトの名無しさん:2012/12/19(水) 12:39:44.35
生成するウインドウの位置で取得できるDCのデバイスが決定するから、指定は可能なんだが、
指定はできないとか嘘をつくのはやめろ。

147 :130:2012/12/19(水) 12:54:15.10
>>146
指定する方法を教えていただけませんか。

あるいは、指定する方法の調べ方のヒントでも構いません。
「HDC GPU」や「HDC ビデオカード」などのキーワードでググってみても
なかなか分かりません。

148 :デフォルトの名無しさん:2012/12/19(水) 12:57:06.74
異なる種類のGPUを(同一のモニタ上に)描画用として使用するのは
難しい(おそらく不可能)ために、使用時点で有効になっているGPUの
デバイスコンテキストが作成されると考えて差し支えないはず。

つまり「どのGPUへのコンテキストを作るか選びたい」という要求自体
不可能ということになる。

149 :デフォルトの名無しさん:2012/12/19(水) 13:02:28.02
馬鹿には無理

150 :デフォルトの名無しさん:2012/12/19(水) 13:27:05.24
>>147
HDCを取得した時点のデバイスが対象になるから、
そうなるようにウインドウの位置を調整すれば良いだけの話。

151 :デフォルトの名無しさん:2012/12/19(水) 13:30:35.82
また複数デバイスを同時に連携させたいのなら、
プロセスをその数だけ作ってオフラインレンダリングした後に、
データをソケットなりで引き渡せば良い。

152 :130:2012/12/19(水) 19:30:07.50
>>150
ごめんなさい、まだ意味が分かりません。

複数のディスプレイアダプターがインストールされている場合、
DirectX はどれを使うか選択できたような記憶があるのです。
その時に、ウィンドウの位置などは特に気にせずとも設定できたような気がするのですが、
OpenGL で同じような事はできないということでしょうか。

153 :デフォルトの名無しさん:2012/12/19(水) 19:45:15.06
馬鹿には無理

154 :デフォルトの名無しさん:2012/12/19(水) 19:51:01.84
複数のGPUにそれぞれ別々のモニタが割り当てられている場合なら、>>150 でいいと思う。
モニタが一枚なら、知らん。

155 :130:2012/12/19(水) 19:58:22.55
>>154
モニターは1枚なので諦めます。

みなさんありがとうございました。

156 :デフォルトの名無しさん:2012/12/19(水) 21:27:38.03
デバイスを直接指定してHDCを作ろうとかいう発想には至らないんだね。
まあ想像通りの結果だったけど。

157 :デフォルトの名無しさん:2012/12/19(水) 21:55:44.57
xp以降なら CreateDC を使えって事でしょ

158 :デフォルトの名無しさん:2012/12/19(水) 22:53:33.26
WindowsプログラマでHDCが何者かわからないってどうよ

159 :デフォルトの名無しさん:2012/12/19(水) 23:41:11.63
glFrustumを使っていて途中で一時的にもっと手前までレンダリングしたい。
nearを小さく小さく

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

宜しくお願いします。

160 :デフォルトの名無しさん:2012/12/19(水) 23:46:44.38
glFrustumで適用される行列の導出方法が載ってるので逆算して求めてください
ttp://www.opengl.org/sdk/docs/man2/xhtml/glFrustum.xml

161 :デフォルトの名無しさん:2012/12/20(木) 00:04:50.66
数学できない子が3Dやる意味がわかりません><

162 :デフォルトの名無しさん:2012/12/20(木) 00:10:45.33
数学つっても高校数学ですね、3Dは。

163 :デフォルトの名無しさん:2012/12/20(木) 00:15:29.41
最近はエピポーラ幾何を高校で習うのか

164 :デフォルトの名無しさん:2012/12/20(木) 00:17:47.42
>>160
ありがとう!

165 :デフォルトの名無しさん:2012/12/20(木) 00:21:28.98
高校で行列教えなくなったって聞いたが

166 :デフォルトの名無しさん:2012/12/20(木) 00:54:20.67
結局は3次か4次の線形代数でしょう
線形数学は大したことないぽ

167 :166:2012/12/20(木) 00:56:02.43
有限次元の線形代数は、という意味ね

168 :デフォルトの名無しさん:2012/12/20(木) 06:01:50.67
通りすがりの元ゲーム屋なウェブ屋だけど、結局最後に勝つのはお前らC++erだと思うよ。
ネイティブ最強、ウェブもEmscriptenとWebGLがモノになれば最強でしょ。
JavaScriptやその派生言語で本格的な3Dコード書くとか想像できないし
(そもそもこっちの連中、なんでJavaScriptじゃ駄目なのか根本的に分かってない)

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

俺は出戻りを考えたりもするけどブランクがありすぎる

169 :デフォルトの名無しさん:2012/12/20(木) 07:51:19.32
数学じゃなくて算術

170 :デフォルトの名無しさん:2012/12/20(木) 21:58:31.12
ボトルネックは大体GPUなんだし
JITでネイティブ言語の10%落ちくらいまで行ければいいんだけどなあ

171 :デフォルトの名無しさん:2012/12/21(金) 00:40:26.02
和算に3Dってあったっけ?

172 :デフォルトの名無しさん:2012/12/21(金) 09:01:05.69
甲乙丙座標系を知らないな

173 :デフォルトの名無しさん:2012/12/21(金) 22:15:53.32
蝕の日時を予言するためにはもっと高度な算法が必要じゃないか?

174 : 忍法帖【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/

175 :デフォルトの名無しさん:2012/12/27(木) 11:53:23.85
出版社は同じだろ。どちらも903474だ。

176 :デフォルトの名無しさん:2012/12/28(金) 17:05:27.80
OpenGL ES 1.0でテクスチャになんか描画して、ES 2.0でそのテクスチャを板ポリに貼り付けて描画って可能ですか?

177 :デフォルトの名無しさん:2012/12/28(金) 17:34:09.28
試してみました?

178 :デフォルトの名無しさん:2012/12/28(金) 17:38:43.53
何事も経験が大事

179 :デフォルトの名無しさん:2012/12/31(月) 14:23:29.65
Windows、Macで、ローエンドPC、ノートPCでも動く
(3,4年前のノートPCで動くレベル)
開発をしろと言われたけど
OpenGL のバージョンどれくらいが良い?
(とりま Android,iOSで動く ES2.0のC++のエンジンは作った事ある )

あと お勧めの追加ライブラリある?
Win&Mac なのでC++確定だとおもうけど・・

180 :デフォルトの名無しさん:2012/12/31(月) 15:38:58.04
>>179
OpenGL 2.0(1.4 まで下げなくてもいいと思う)

お勧めの追加ライブラリあるかと訊かれても何を開発するのか分からん

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

今回作るのは レンダラー。 一般的な3D処理 スキンメッシュ〜補完、IK
もしかしたら物理演算 セルフシャドウ
ぐらいの 2.0で十分出来る内容で
Boostとか無駄に使いまくってるからそれと親和性あるライブラリあったら
楽したい

182 :デフォルトの名無しさん:2012/12/31(月) 17:36:14.05
>>181
> 今回作るのは レンダラー。 一般的な3D処理 スキンメッシュ〜補完、IK
> もしかしたら物理演算 セルフシャドウ

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

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

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

レンダラーを自作するための「どのようなライブラリ」が欲しいのか明記してくれ。

183 :デフォルトの名無しさん:2012/12/31(月) 17:39:14.37
>>180
2.0だとDLLを別途配布しないといけなくない?
なんでWindowsはOSバージョンアップ時に更新していかないんだろ。
政治的な問題があるのかな?

184 :デフォルトの名無しさん:2012/12/31(月) 18:36:50.87
DLLは必要無い

185 :デフォルトの名無しさん:2012/12/31(月) 18:52:14.07
>>183
政治的な問題って例えば何?

186 :デフォルトの名無しさん:2013/01/01(火) 01:56:45.06
Windowsじゃなくても1.2以降の機能は関数アドレス自分で取りにいかないといけないんじゃないか?
ライブラリならとりあえずGLEWとGLMだけで十分だろ

187 :デフォルトの名無しさん:2013/01/04(金) 13:54:37.18
>>186
GLMなんて数学ライブラリがあったのね。知らなかった。
しかもMITライセンスか。いいねー。

188 :デフォルトの名無しさん: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;
}
こう書けて良い感じ

189 :デフォルトの名無しさん:2013/01/04(金) 14:46:29.40
外積関数そのものが既にライブラリにあって自作しないから、
その例だとあまり御利益ない感じ。

190 :デフォルトの名無しさん:2013/01/04(金) 15:23:00.26
書き方の話であって、関数自体はどうでも良いんだが……

191 :デフォルトの名無しさん:2013/01/04(金) 15:48:19.88
要素の参照順を変えられる事を「良い感じ」と言ってるけど、
良い感じっぷりを他の例でも挙げてくれるとありがたい。

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

今まで自分が作ってきた3Dプログラム(主にゲーム)を振り返ってみて、
要素の参照順を変えられると助かったシーンを思い返してみてるんだけど、
なかなか思い浮かばないんだ。

192 :191:2013/01/04(金) 15:50:56.51
補足しておくと、「これから新たに3Dアプリをプログラムするに当たって」
その良い感じっぷりが感じられるような例が何かないかなぁという意味。

193 :デフォルトの名無しさん:2013/01/04(金) 15:56:49.72
Swizzle演算子知らないの? 使ったこと無いの?

194 :191:2013/01/04(金) 16:03:12.45
>>193
知ってるし、シェーダープログラムでは使ったこともあるが、
C言語内では使う機会が今のところなかった。

195 :デフォルトの名無しさん:2013/01/04(金) 16:05:57.45
行列やベクトルの操作を、ライブラリの関数呼び出すよりよっぽど簡易に書けるんだが。
ま細かい操作をしないのなら無用でしょうさ。

196 :191:2013/01/04(金) 16:09:21.70
ごめん、なんか気分を害させたみたい。

どうしても今知る必要があるという質問ではないので、
変にこじれる前にこれで退散する。

197 :デフォルトの名無しさん:2013/01/04(金) 20:32:09.44
例の粘着荒らしはOpenGL使えないはずだからとりあえずご安心を。

198 :デフォルトの名無しさん:2013/01/09(水) 16:18:37.78
申し訳ありません、質問よろしいでしょうか?

Openglでobjファイルの点群データを扱っているのですが、点群にglCcolorで色を付けた際、ある方向から見ないとまともに色がついて表示されませんでした。
それ以外の方向から見ると多少濃淡が着いただけの水色で表示されてしまいます。どなたかこの現象の心当たりなどございませんか?

199 :デフォルトの名無しさん:2013/01/09(水) 16:31:36.19
追記です
色が見えるようになるのは、右上に表示されている座標軸のマークが黒くなっている時でした
恐らく光源との関係があると思います

200 :デフォルトの名無しさん:2013/01/09(水) 17:06:57.92
申し訳ありませんが、どんなコードを書いているのか判らないので
何が起きているのか想像ができません。
一昨日来やがってくださいませ。

201 :デフォルトの名無しさん:2013/01/09(水) 17:18:51.65
ポリゴン描く時以外はライティングオフにしないとダメ でいいのかな

202 :デフォルトの名無しさん:2013/01/09(水) 17:19:06.02
光源と関係があるとアタリが付いてるのなら、試しに光源処理を切ってみればいいと思うの

203 :デフォルトの名無しさん:2013/01/09(水) 18:43:56.84
金曜日から来ました

204 :デフォルトの名無しさん:2013/01/15(火) 00:44:45.32
Matrixの管理ってどうしてる?
Object毎にglLoadMatrixfするのはやらない?

205 :デフォルトの名無しさん:2013/01/16(水) 00:50:53.22
それ非推奨機能だからもうみんな使ってないんじゃないかな

206 :デフォルトの名無しさん:2013/01/16(水) 00:58:27.87
行列使わなくなったってこと?

207 :デフォルトの名無しさん:2013/01/17(木) 16:39:06.01
行列は自分で管理して適当にシェーダに渡せってこと

208 :デフォルトの名無しさん:2013/01/17(木) 19:56:39.32
モダニストめ

209 :デフォルトの名無しさん:2013/01/18(金) 09:41:58.44
日揮もとうとうヤキが回ったな。
by重役に恨みがある

210 :デフォルトの名無しさん:2013/01/18(金) 16:10:17.51
質問です。
glColor4f(r,g,b,a)のr,g,bの値を1.0未満に設定して描画することで画像の色合いを暗くすることはできるのですが、
逆に画像を白っぽくしたい場合はどうすればよいのでしょうか?

211 :デフォルトの名無しさん:2013/01/18(金) 16:22:02.77
1.0に近づければいい

212 :デフォルトの名無しさん: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); // 元の色合いに戻す

213 :デフォルトの名無しさん:2013/01/18(金) 16:58:28.27
便利な言葉
馬鹿には無理

214 :デフォルトの名無しさん:2013/01/18(金) 17:09:49.69
>>212
GL_MODULATEをGL_BLENDに変更するとか?

215 :デフォルトの名無しさん:2013/01/18(金) 17:21:07.56
シェーダ使って好きなだけ色を加算すればいいだろう。

216 :デフォルトの名無しさん:2013/01/18(金) 17:29:45.47
>>214,215
ありがとうございます。
うまくいきそうです。

217 :デフォルトの名無しさん:2013/01/18(金) 21:00:55.26
超初歩的な質問ですみません。
現在、webを参考にしながら、まずはOpenGLES1で2D画像を表示させようとしています。
環境はxcode4.5、iPhone用アプリです。
それで、どうにかテクスチャにPNG画像を読み込んで表示させる事に成功したのですが、
読み込む画像が510pixを超えると、全く表示出来なくなってしまいます。

テクスチャの最大サイズが1024pixまでというのが原因かなとは思っているのですが、
ES1の場合、Retinaの画面サイズにスッポリ入るようなサイズを読み込む事はできないのでしょうか?
ちなみに、eaglLayer.contentsScale = [UIScreen mainScreen].scale;でRetina対応にしています。

218 :デフォルトの名無しさん:2013/01/18(金) 22:24:09.35
256の整数倍に

219 :デフォルトの名無しさん:2013/01/19(土) 19:24:53.23
DXUT にはスライドバーなどのコントールがありますが、
同じようなコントローラーを提供する OpenGL 用の GUI ライブラリはありますか。

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

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

どなたかご存じないでしょうか。

220 :デフォルトの名無しさん:2013/01/19(土) 19:44:40.05
anttweakbarとか?スライダーないけど

221 :デフォルトの名無しさん: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を混ぜた色にしたりすると
綺麗に半透明にならない感じなのですが、色情報について、またアルファ値について
何か大きな認識間違いをしているのでしょうか?

222 :デフォルトの名無しさん:2013/01/19(土) 20:40:16.46
はい

223 :デフォルトの名無しさん:2013/01/19(土) 20:48:12.03
単純にチャンネルの対応が間違ってるじゃねえの
1チャンネルずつ0にして対応確認しろよ

224 :219:2013/01/19(土) 21:13:51.38
>>220
ありがとうございます。

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

もう少し詳細に調べてみます。

225 :デフォルトの名無しさん:2013/01/20(日) 01:25:35.48
openGL用のビューの上に透明のUIビューを重ねて、openGLの機能と一緒に
UILavelなどを使いたいのですが、xib上でopenGLのViewの上に
配置して実行するとエラーになってしまいます。
こういった場合、普通にビューを重ねてもダメなのでしょうか?

226 :デフォルトの名無しさん:2013/01/20(日) 03:01:26.39
はい

227 :デフォルトの名無しさん:2013/01/20(日) 10:49:03.70
⊃subview

228 :デフォルトの名無しさん:2013/01/20(日) 13:42:53.07
>>225
iPhone開発のスレ逝け

229 :デフォルトの名無しさん: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しています。

230 :デフォルトの名無しさん:2013/01/22(火) 20:32:16.44
自己解決しました。
GL11も必要なんですね・・。

231 :デフォルトの名無しさん:2013/01/22(火) 21:29:27.44
http://www.wgld.org/

232 :デフォルトの名無しさん:2013/01/27(日) 23:18:55.32
基本的な事かもしれないですが質問です。
COLLADAをパースしたところ、trianglesのインデックスリストに
頂点座標(0,1,2)、法線(0,0,0)みたいになってました。
ようするに、法線は全頂点で同じなのでそうなっていると思いますが、
OpenGLでこれをそのまま描画する方法は無いでしょうか?

最終的にはglDrawElementsで描画するには法線データを3つコピーして
(0,1,2)で描画できるようにしましたが。

233 :デフォルトの名無しさん:2013/01/28(月) 02:41:55.31
法線だけin/out変数にflat付けとけば良いんじゃないか

234 :デフォルトの名無しさん:2013/01/28(月) 22:40:15.04
まぁフラットとは限らない。座標(0,1,2)、法線(0,0,1)とかもありえる。
多分無理だろうと思えてきた。

235 :デフォルトの名無しさん:2013/01/29(火) 18:30:06.78
デスクトップ(Win、Mac)と スマホ(iPhone Android)
に対応した OpenGLアプリ作りたいんだが(C++)
OpenGLのバージョン、ライブラリ、UIライブラリ等のオススメある?
今 OpenGL2.0とES2.0を コンパイルオプションで分けて
GLUT+Qtフレームワークを想定している
作るものは、モデルビュワー&アニメーション作成かな。
最終的には物理演算つけて楽しみたい。

236 :デフォルトの名無しさん:2013/01/29(火) 18:33:55.11
了解。

237 :デフォルトの名無しさん:2013/01/29(火) 20:36:10.78
WindowsPhoneはだれかGLESのラッパーつくってくれねえかな。

238 :デフォルトの名無しさん:2013/01/29(火) 20:48:20.69
なんでこう日本人はどいつもこいつも他力本願なんだよもう・・・

239 :デフォルトの名無しさん:2013/01/30(水) 04:50:54.63
世の中銭や

240 :デフォルトの名無しさん:2013/01/30(水) 10:41:44.17
>>235
取り敢えず手元ではQtOpenGLアプリがWin/Mac/Linuxで動いている。
私もタブレットを睨んでいるので、経過を報告してくれると嬉しい。

241 :デフォルトの名無しさん: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)等の環境構築してる

242 :デフォルトの名無しさん: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 だけ特別扱い。

小一時間はまったよ、なんかムカツク。

243 :デフォルトの名無しさん:2013/01/30(水) 21:23:41.15
はぁ?

244 :デフォルトの名無しさん:2013/01/30(水) 21:41:18.18
お前には無理だ
頂点属性ごとに別の配列にしとけ

245 :デフォルトの名無しさん:2013/01/30(水) 21:44:07.76
>>242
あるある
まあ慣れの世界だ

246 :デフォルトの名無しさん:2013/01/30(水) 22:09:28.49
strideって次のデータが始まるまでの個数だから普通に直感的に思えるが、
そう思わない人もいるんだな。
strideがsize以下は全部sizeと同じとしてるんだろう。

247 :デフォルトの名無しさん:2013/01/30(水) 22:12:49.36
strideが要求するのが、前の頂点データの終わりからみてなのか始まりからみてなのかが、
普段使う値「0」から間違った想像を働かせてしまう

248 :デフォルトの名無しさん:2013/01/30(水) 22:19:14.07
sizeof演算子で構造体の大きさ入れる癖付けとけば問題ない

249 :242:2013/01/30(水) 22:36:37.75
まぁ、一度分かってしまえば、直ぐになれるけどね。

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

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

>>248
うん、そうしとくよ。

250 :246:2013/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だったらどうなるんだろ?

251 :デフォルトの名無しさん:2013/01/30(水) 23:11:03.86
ありえないだろ

252 :デフォルトの名無しさん:2013/01/30(水) 23:57:11.79
size=次元数
stride=バイトオフセット
だけど、最終行の過程では単にstride通りにデータフェッチするだけで例外はおこらない

253 :デフォルトの名無しさん:2013/01/31(木) 00:36:42.97
左端:頂点ID、□□□:3次元ベクトルとすると

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

みたいなオーバーラップするデータフェッチも可能ということだね
簡易に時系列データの平滑化やNURBS曲線のKnotに使えそう?

254 :デフォルトの名無しさん:2013/02/02(土) 17:58:37.68
あとはマイクロソフトがWebGLをサポートしてくれればな・・・
今までも、そしてこれからも、ブラウザシェアはIEがトップだろうし。
まあ、無理っぽいけどさ。

255 :デフォルトの名無しさん:2013/02/02(土) 18:24:19.69
何この人、複数のスレに同じレス書いて気持ち悪い

256 :デフォルトの名無しさん:2013/02/02(土) 18:53:53.83
BCCっていう機能使ってるんじゃね?

257 :デフォルトの名無しさん:2013/02/02(土) 19:59:23.14
シェーダープログラムのレイアウト修飾子を使って定義できる属性インデックスって、
そのシェーダープログラム内で一意ならどんな番号を振ってもいいの?

それとも、小さい数から順に振っていかないとまずい?

258 :デフォルトの名無しさん:2013/02/02(土) 20:09:04.25
小さい方から順なら指定する意味が半減するだろ
15番までなら自由に指定できるはずだ

259 :257:2013/02/02(土) 20:31:36.28
>>258
> 15番までなら自由に指定できるはずだ

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

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

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

ありがとう。

260 :デフォルトの名無しさん:2013/02/02(土) 23:18:07.89
冒険しないからこその価値もあるんだよ
IEはただのブラウザじゃなくて膨大な業務クライアントを動かす超重要なプラットフォームなんだから

261 :デフォルトの名無しさん:2013/02/03(日) 01:09:28.55
ステマックス リローデッド

262 :デフォルトの名無しさん:2013/02/05(火) 20:27:46.89
たぶん OpenGL 3.0 以降の話になるかと思いますが、

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

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

それとも、glGenBuffers は単価に削除フラグを立てるだけで、
実際は VAO に使われている間は生き続けている、と解釈して良いのでしょぅか。

263 :デフォルトの名無しさん:2013/02/05(火) 22:19:14.81
ドライバのバグですね
ttp://www.opengl.org/sdk/docs/man/xhtml/glDeleteBuffers.xml

264 :262:2013/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 も一緒に保存されるという意味ではないですか。

265 :デフォルトの名無しさん:2013/02/06(水) 01:57:25.25
>>263
excite先生にかけて直訳した文章を英文と見比べて
自分なりに意訳してみればある程度推測がつくよ。

266 :デフォルトの名無しさん:2013/02/06(水) 01:57:52.33
× >>263
>>264

だった。失礼。

267 :262:2013/02/06(水) 07:08:24.59
>>265
私には vertex array buffer object も一緒に保存される
としか今は解釈できないです。

268 :デフォルトの名無しさん:2013/02/06(水) 11:46:07.29
だからハートのにおいがついちゃうんだって

269 :デフォルトの名無しさん:2013/02/06(水) 20:32:53.63
2chのOpenGLスレ劣化しすぎじゃね?
手元のOpenGL4.0の訳本によれば、
付録D.1.2 削除されたオブジェクトとオブジェクトの名前のライフタイム
バファやテクスチャー(以下省略)が削除される場合、その名前はすぐに無効(例えば未使用と印がつく)になりますが、
実際のオブジェクトはそれが使用されなくなるまでは削除されません。
と、明確に定義されている。
上の例で言えばVertexArrayオブジェクトが生きている限りそこにバインドされたバッファオブジェクトは削除されない

270 :269:2013/02/06(水) 20:34:23.39
これからOpenGLは上がり調子でいけいけなんだから頑張れよ
DirectXはもう新規開発をやめたので今後10年ぐらい
3D APIの標準はOpenGLの4.2あたりになると思う

271 :デフォルトの名無しさん:2013/02/06(水) 20:37:16.73
他人に文句をたれるより自分がなんとかしろよカス

272 :262:2013/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系オブジェクトについて、
使用中のオブジェクトの削除はフラグが立つだけと考えて問題ないのでしょうか。

273 :262:2013/02/06(水) 20:59:52.46
>>272
> もちろん glDeleteVertexArrays もです。

[訂正]
もちろん glDeleteBuffers もです。

274 :デフォルトの名無しさん: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が新規開発してないってどこから出たんだろう)

275 :デフォルトの名無しさん:2013/02/07(木) 06:20:18.94
参照カウンタ的なのを明示してくれればいいのにね

276 :デフォルトの名無しさん:2013/02/07(木) 08:17:56.43
削除する前にバッファを0で埋めとけば解決

277 :デフォルトの名無しさん:2013/02/07(木) 11:22:23.94
nvidiaのドライバは結構適当で
radeonのは仕様通りに動くと聞いたことがある

278 :デフォルトの名無しさん:2013/02/07(木) 11:44:02.75
×適当
○柔軟性がある

279 :デフォルトの名無しさん:2013/02/07(木) 13:03:58.33
インターネットエクスプローラーみたいなもんか

280 :デフォルトの名無しさん:2013/02/08(金) 01:55:13.20
XNAは今後アップデート予定はないってニュースはあるが
DirectXのアップデート予定は無関係だろ。

281 :デフォルトの名無しさん:2013/02/08(金) 19:16:23.65
アップデートというか、DirectXtってただのOpenGLランタイムですよね?
APIで受け取ったデータをGPUのOpenGLドライバに流すだけですから

282 :デフォルトの名無しさん:2013/02/08(金) 19:35:09.25
そんなわけがない

283 :デフォルトの名無しさん:2013/02/08(金) 22:03:50.64
しかしそれは悪魔の証明である

284 :デフォルトの名無しさん:2013/02/08(金) 22:44:03.12
>>281
ソース

285 :デフォルトの名無しさん:2013/02/09(土) 00:04:55.44
しかし酷いな
>>272だから付録のDを読めって。全部明確に書いてあるから
>>274そう読めるなら英語の勉強からやり直せ

286 :デフォルトの名無しさん:2013/02/09(土) 00:26:54.23
むしろVista以降のOpenGLコールはDirect3DのDDIに流されるって話じゃなかったけ?

287 :デフォルトの名無しさん:2013/02/09(土) 00:51:30.34
ゲーム用と画像用を同系列で比べるのはいかがなものかと

288 :デフォルトの名無しさん:2013/02/09(土) 07:07:56.23
>>287によると、ゲームは画像を扱わないらしい。
馬鹿の考えはさっぱり分からない。

289 :デフォルトの名無しさん:2013/02/09(土) 08:44:53.78
OpenGL初心者の俺にも、>>287の屁理屈はおかしいと思える

290 :デフォルトの名無しさん:2013/02/09(土) 09:29:47.35
なんでこんなレベルの低い人がいるの?

291 :262:2013/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 のアタッチについて)

ありがとうございます。
おかげさまで、はっきりさせることができました。

292 :デフォルトの名無しさん:2013/02/09(土) 11:06:00.14
これだね
OpenGL4.0グラフィックスシステム
http://www.amazon.co.jp/dp/4877832556/

仕様書はもちろん無料。7140円は翻訳代だろう。
マイナーバージョンレベルで少し古くなってきたけど今のところ全く問題ない
どうせテッセレーションとか使わないし・・・

293 :デフォルトの名無しさん:2013/02/12(火) 04:36:46.64
marching tetrahedronってどういうときにつかうの?

294 :293:2013/02/12(火) 04:48:56.16
誤爆スマソorz

295 :デフォルトの名無しさん:2013/02/12(火) 05:03:24.52
ボリュームレンダリングでしょう

296 :デフォルトの名無しさん:2013/02/12(火) 05:20:22.72
KinectからDepthImageを抽出して、物理計算用メッシュを構築する時

297 :デフォルトの名無しさん:2013/02/12(火) 06:04:56.75
たしかcubesと違って穴が開かないんだっけ?

298 :デフォルトの名無しさん:2013/02/12(火) 19:12:18.83
>>295
それはmarching〜の入力データのほうの使い方

299 :デフォルトの名無しさん: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で使うとマーカーを読み込んだ際に例外エラーが発生して終了してしまいます
どなたか原因が分かる方はいらっしゃいませんか?

300 :デフォルトの名無しさん:2013/02/13(水) 14:36:07.02
>OpenGL上では正しく機能
 たまたま動いたのをそう錯覚してるだけでは

301 :デフォルトの名無しさん:2013/02/13(水) 14:44:02.31
>>299
cが0で&c[k]とかやったら落ちて当然じゃね

302 :デフォルトの名無しさん:2013/02/13(水) 15:24:13.94
>>299
滅茶苦茶過ぎてワロタ
ARtoolkitというよりC言語の初歩の問題ですから

303 :デフォルトの名無しさん:2013/02/13(水) 20:19:02.16
OpenGLでも動くわけ無いだろw
クソして書き直せボケ

304 :デフォルトの名無しさん:2013/02/13(水) 23:16:52.89
OpenGL でテクスチャ貼るなら、今なら GLI(OpenGL Image) 使うのがお勧め?
ver.0.4 だけど、見た感じ良さそうだなぇ。GLM(OpenGL Mathmatics) なら最近使い始めて
満足しています。

305 :デフォルトの名無しさん:2013/02/14(木) 01:00:02.07
対応フォーマット数的にDevIL (Developer's Image Library)しかないやろ
ilutなんてアレをリスペクトしたツールキットまであるしな

306 :デフォルトの名無しさん:2013/02/14(木) 03:36:19.02
>>299
言い方はキツいけど >>302 の言うことで尽きてる。
C言語のまともな本を通読するべき。

307 :デフォルトの名無しさん:2013/02/14(木) 10:17:48.15
無駄に対応フォーマットが多くてもしょうがない
俺のお気に入りはSean Barrettさんの画像ライブラリ
http://nothings.org/
依存しているライブラリがないのでこれ一つコピって来れば動くのがうれしい

308 :デフォルトの名無しさん:2013/02/14(木) 22:31:35.94
クッソワロタ

309 :デフォルトの名無しさん:2013/02/15(金) 00:05:48.81
SOIL使いやすいよね

310 :デフォルトの名無しさん:2013/02/16(土) 14:25:24.60
OpenGL 3.x 以降、コアプロファイルを使うなら、
どのようなプリミティブのレンダリングに対しても、
実用上少なくとも頂点シェーダーとフラグメントシェーダーは必要である、
という認識で良いんですよね。

つまり、シェーダーが無ければ意味がない、と。

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

http://www.opengl.org/documentation/current_version/

312 :デフォルトの名無しさん: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.

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

ありがとうございました。

313 :デフォルトの名無しさん:2013/02/16(土) 18:07:16.23
「無視される」じゃなくて「未定義」なんだな・・・

314 :デフォルトの名無しさん:2013/02/16(土) 18:15:58.15
Radeonは無視しますがGeForceは描画します^^

315 :デフォルトの名無しさん:2013/02/16(土) 19:31:33.88
>>314
どんな風に描画されるの?

真っ黒とか?

316 :デフォルトの名無しさん:2013/02/17(日) 00:51:10.95
普通に固定機能だから

317 :デフォルトの名無しさん:2013/02/17(日) 02:41:32.01
そいつ自作板で数年以上も根拠なくAMDを叩き続けてる
通称雑音っていうイカレ野郎だから。

318 :デフォルトの名無しさん:2013/02/17(日) 03:29:23.07
AMD叩いてるようにみえるのか・・・俺には逆に見える

319 :デフォルトの名無しさん:2013/02/17(日) 04:42:26.93
おかしなことやろうとすると完全無視で副作用何も無しというのがOpenGLの良いところだったのにな

320 :デフォルトの名無しさん:2013/02/17(日) 08:32:29.82
おかしなことをやってるのに無視されてバグが見つけにくいのは悪いところじゃね

321 :デフォルトの名無しさん:2013/02/17(日) 08:33:49.33
そのためのglGetErrorでは

322 :デフォルトの名無しさん:2013/02/17(日) 09:29:16.36
glGetErrorの仕様を考えた奴は死ねばいいと思う
全てのOpenGLコマンドの後ろでglGetErrorを呼ばざるを得ず
コードがごちゃごちゃして見にくい事この上もない

323 :デフォルトの名無しさん:2013/02/17(日) 09:49:34.63
もう20年前以上前、下手すりゃIRIS GLまでさかのぼる話だろうから温かい目で
許してあげようよ。

324 :デフォルトの名無しさん:2013/02/17(日) 10:07:23.82
>>322
1フレームに1回呼べばエラーの有無はわかるし、あとはエラーが起こりそうなブロック毎とかで十分では

325 :デフォルトの名無しさん:2013/02/17(日) 10:19:50.11
デバッグモード時条件コンパイルでいいじゃん

326 :デフォルトの名無しさん:2013/02/17(日) 13:27:17.37
assert(glGetError() == GL_NO_ERROR);
では、ダメなんでしょうか?一行挟むだけ。

327 :デフォルトの名無しさん: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/

328 :デフォルトの名無しさん:2013/02/17(日) 13:32:49.86
ぶっちゃけ DDS 貼りたいだけなんで、GLI を試そうかと思っています。

329 :デフォルトの名無しさん:2013/02/17(日) 18:00:14.41
色んな形式の画像読み込むのがめんどいだけなんで
OpenGLのテクスチャオブジェクトまで作ってくれるのは余計なお世話だと感じる
coreプロファイルだと使えなくて残念だったり

330 :デフォルトの名無しさん:2013/02/17(日) 22:04:07.36
おまえっていつも文句しか言わねーのな

331 :デフォルトの名無しさん:2013/02/17(日) 23:21:26.90
すまん誤爆

332 :デフォルトの名無しさん:2013/02/18(月) 09:50:30.67
>>329
お前は俺か
それがSean Barrettさんのライブラリな
stb_load()一発で全ての画像ファイルを読み込んでchar*が返ってくる
依存ライブラリがなく1つの.cファイルに全部収まっている(libzすら不要)なので
1つコピってくれば動くのがうれしい

ってか固有名詞付けろよ・・・・

333 :デフォルトの名無しさん:2013/02/20(水) 21:21:12.04
>>327
ライセンスってどうなってる?

334 :デフォルトの名無しさん:2013/02/20(水) 21:43:34.08
>>333
GLI --> MIT
DevIL --> LGPL
SOIL --> Public Domain
stb_image.c --> public domain

これくらいサイトを見たり、ダウンロードしてみれば分かるよな
自分で簡単な調査くらいしてから質問しろ

335 :デフォルトの名無しさん:2013/02/20(水) 21:56:48.92
ベリーセンキュー
stb_image.cをダウンロードしてソース見ながら聞いたけどまさか1行目にあるとは思わなんだ

336 :デフォルトの名無しさん:2013/02/20(水) 22:01:29.06
>>335
stb_image.c のページに書いてあるんだが・・・

source: stb_image.c public domain C image loading library

337 :デフォルトの名無しさん:2013/02/20(水) 23:26:37.78
で、それらのライセンスって何がどう違うの?

338 :デフォルトの名無しさん:2013/02/20(水) 23:35:39.48
それはスレチだろ

それにまじめな話、ライセンスはデリケートなものだから、
又聞きじゃなくて、ちゃんと原文を調べた方が良いと思う

339 :デフォルトの名無しさん:2013/02/20(水) 23:45:49.14
知らないなら黙っててくれませんか?

340 :デフォルトの名無しさん:2013/02/21(木) 00:08:26.79
>>339
スレチだろというぶっきらぼうな言い方で気を悪くしたのなら謝る、ごめん。

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

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

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

この板にもライセンス総合スレがあるから、
そちらで訊いた方が良くないかな。

341 :デフォルトの名無しさん:2013/02/21(木) 08:21:36.46
>>334
Public Domain と public domain に違いはあるのですか?

342 :デフォルトの名無しさん:2013/02/21(木) 19:58:33.41
>>341
ないよ

>>327 にあるそれぞのページからコピペしただけ

343 :デフォルトの名無しさん:2013/02/21(木) 22:32:48.37
MIT:好きに使っていいから俺の名前を書けや
LGPL:微妙に感染症 諸悪の根源のGPLよりはましだが近づかないに越したことない
PD:どうにでもして(その動画、ウイルスかもよ)

344 :デフォルトの名無しさん:2013/02/21(木) 22:44:50.66
MITやLGPLなどは全世界で解釈は一致してるけど、
パブリックドメインは国によって扱いが違う、
とかいう話を聞いたことがある。

345 :デフォルトの名無しさん:2013/02/21(木) 23:17:37.95
日本では著作権の放棄ができないからパブリックドメインは法的にはないんだっけな

LGPLは基本的には安全だよ

346 :デフォルトの名無しさん:2013/02/21(木) 23:54:55.73
インポートライブラリがグレーなのが気になる

347 :デフォルトの名無しさん:2013/02/22(金) 18:30:09.74
>>343
BSDlicenseは?

348 :デフォルトの名無しさん:2013/02/22(金) 19:58:05.05
ググレカス

349 :デフォルトの名無しさん:2013/02/22(金) 20:26:02.81
ククレカレー

350 :デフォルトの名無しさん:2013/02/22(金) 22:26:44.95
PS4ってOpenGL使えるの?

351 :デフォルトの名無しさん:2013/02/22(金) 22:46:07.78
OpenGLベースのカスタムAPIじゃねーの?

352 :デフォルトの名無しさん:2013/02/24(日) 00:09:49.74
OpenGLのAPIそのまま使うだろう
変な機能入れたいならOpenGL拡張にしてしまえば良いだけだし
既存のPC用のデバッガやらなんやらのツール流用も楽だろうし

353 :デフォルトの名無しさん:2013/02/24(日) 02:52:37.92
と、思うだろ?

354 :デフォルトの名無しさん:2013/02/24(日) 04:34:32.35
実はPS4のグラフィックス関係のAPIはDirectXみたいな感じになるらしいよ

355 :デフォルトの名無しさん:2013/02/24(日) 08:35:29.30
と、書けば信じてくれるかな?

356 :デフォルトの名無しさん:2013/02/24(日) 09:23:08.02
情報ソースが複数あれば多少信じるかも知れん。

自分の目でそのAPIを見られれば100%信じると思う。

357 :デフォルトの名無しさん:2013/02/24(日) 09:31:56.96
と、予想しただろ?

358 :デフォルトの名無しさん:2013/02/24(日) 10:16:52.05
PS Mobile APIなんじゃねーの

359 :デフォルトの名無しさん:2013/02/24(日) 10:40:54.66
PS4は、Android 5.0だよ
グラフィックAPIは、Android 5.0に標準搭載されるOpenGL ES 3.0

360 :デフォルトの名無しさん:2013/02/24(日) 12:13:39.53
無料ソフトで遊べるのか安上がりだねついでにwinも動けばお買い得

361 :デフォルトの名無しさん:2013/02/24(日) 12:35:49.59
>>359
はいはいw

362 :デフォルトの名無しさん:2013/02/24(日) 12:59:30.42
ほら吹きだなぁ

363 :デフォルトの名無しさん:2013/02/24(日) 13:16:53.31
dalvik VMの上で動くJavaアプリのAndroidなんて誰が使うんだボケw
ゲーム機はスマホじゃねーんだよ。

364 :デフォルトの名無しさん:2013/02/24(日) 14:25:32.57
>>363
Androidは、既にゲーム機向けのOSになっているよ
今年は世界中で一気にAndroidゲーム機が発売されるしね

365 :デフォルトの名無しさん:2013/02/24(日) 14:37:22.33
JNI使えるからな。

366 :デフォルトの名無しさん:2013/02/24(日) 15:52:45.71
ゲーム専用機が滅んだりして

367 :デフォルトの名無しさん:2013/02/24(日) 16:21:02.68
Androidはサウンド系が弱いんだよね。

368 :デフォルトの名無しさん:2013/02/25(月) 01:35:33.25
>359
マジレスしてしまうが、それはないだろw
ES 3.0ってジオメトリシェーダーとかテッセレータとかないんじゃなかったっけ?
PS3ではgcmっていうRSX特化APIがあったけど、シェーダモデル5.0時代に似たようなAPIはそれなりに死ぬような気がするし(gcmはあれ制御がめっさめんどくさかった……)、
PS4は開発のしやすさ・PC似を標榜しているので、フツーにOpenGL4.3以上な希ガス。

369 :368:2013/02/25(月) 01:46:46.41
>>364
それはないと思う。
共有メモリ方式への対応、速攻で動画をシェアできたり、サスペンドできたりするためにはハードへの高度な最適化が必要で、PS3と同様に完全にカスタムなOSを作り込むはず。

370 :368:2013/02/25(月) 01:47:48.48
>>364
確かにAndroidもベンダが自由にカスタマイズできるが、
PS4の各種機能に完全対応させるのは一から作るより色々面倒が多い気がするし、
仮にやったら他Androidゲーム機との互換性はかなり失われるはずだ(Java VMで動作させれば大丈夫かもしれんが、それだとスピードが犠牲になりすぎる)。
Androidを採用するメリットはあまりない。
そもそもゲーム機はスマホと違って他機種との互換性をそれほど考慮する必要はないし、だったらいっそ一からカスタムで作りますわってなると思う。
ソフト面がわりかしが苦手なSCEだって、OSを一から作る技術と自負くらいはあるよ。

371 :デフォルトの名無しさん:2013/02/25(月) 10:25:14.33
実際Androidベースのゲーム機出るのに何言ってんだコイツ

372 :デフォルトの名無しさん:2013/02/25(月) 12:46:25.87
PS4のことを指しているならそれはない。
PCベースのアーキテクチャではあるがOSが何かはまだ不明。
Android = Java VM上で動くアプリである可能性はほとんどない。
理由は実行速度が遅すぎるから。

373 :デフォルトの名無しさん:2013/02/25(月) 13:18:38.21
OUYAとかのことを言ってるんだけど。
PS4とかアホか

374 :デフォルトの名無しさん:2013/02/25(月) 16:28:26.42
ゲーム機はタブレット同様コンテンツ消費型のデバイスだから、OSとしては画面占有(あるいはタイル形式の画面分割)型アプリとネットワークサービスを前提とするAndroidが向いている面はあるかな

375 :デフォルトの名無しさん:2013/02/25(月) 18:15:04.11
>>371
Androidを選ぶゲーム機メーカーがあるとすれば、
それは
・自力でOSを作るだけの技術or体力がない。
あるいは
・ハードの特殊機能への最適化よりも、スマホ開発者などの取り込みを優先した。
のいずれかではないかと。
いずれも、SCEのPS4には当てはまらないかな。
後者については、PS Vitaの例のSDKは当てはまってる気がするが。

376 :デフォルトの名無しさん:2013/02/26(火) 21:04:29.44
OSよりライブラリだろ
馬鹿しかいねえ

377 :デフォルトの名無しさん:2013/02/26(火) 22:14:37.16
ポカーン

378 :デフォルトの名無しさん:2013/02/27(水) 08:02:20.58
FirefoxOSって何?
GLも動くの?

379 :デフォルトの名無しさん:2013/02/27(水) 11:17:30.34
GLはプログラムを作るためのAPIであって、何かのアプリの上で
動くものではない。

380 :デフォルトの名無しさん:2013/02/27(水) 12:13:14.26
>>378
Firefox(Android版もWebGL対応)ベースなら、動くんじゃないの

381 :デフォルトの名無しさん:2013/02/27(水) 16:09:12.28
FirefoxOS って Android とは別物だよね?
っていうかそもそも ChromeOS って Android のこと?

382 :デフォルトの名無しさん:2013/02/27(水) 17:18:27.02
ChromeOS も別物だよ

383 :デフォルトの名無しさん:2013/02/27(水) 19:19:35.43
JavaScriptでOpenGLとかやってくれと言われたら発狂するけどな

384 :デフォルトの名無しさん:2013/02/27(水) 19:32:27.88
情弱乙

385 :デフォルトの名無しさん:2013/02/27(水) 20:52:23.46
>>383
一番簡単にOpenGLできるのが、JavaScriptだよ

386 :デフォルトの名無しさん:2013/02/27(水) 21:06:55.22
JavaScriptって作るの簡単、メンテやっかいなイメージある

387 :デフォルトの名無しさん:2013/02/27(水) 21:15:03.06
>>383
WebGL

388 :デフォルトの名無しさん:2013/02/27(水) 22:38:45.76
トライアングル一個出すならJavaScriptでいい
ゲーム作るのは勘弁して><

389 :デフォルトの名無しさん:2013/02/28(木) 21:09:17.48
うわぁ・・・

390 :デフォルトの名無しさん: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が読み込めるように書き換えただけで描画に関する部分は殆んど変えてません

391 :デフォルトの名無しさん:2013/03/01(金) 00:53:27.34
デプスバッファの精度が足りないのでは?
gluPerspectiveに与えるニアクリップの値をなるべく大きくしてみてください

392 :デフォルトの名無しさん:2013/03/01(金) 01:17:53.63
>>391
解決しました!
ほんとに助かりました、ありがとう!

393 :デフォルトの名無しさん:2013/03/02(土) 12:05:34.57
1枚のテクスチャ(例えば64*64px)に複数のキャラクタ(例えば32*32pxが4つ)が書かれていて、
glTexCoordPointerで1キャラクタ分の領域だけ指定して描画するって常套手段だと思うんですけど、
そうすると、端に隣のキャラクタの色が混じってしまいます。
これを回避する手段ってなんかありますか?

環境はAndroid OpenGL ES 1.1、C++です。

394 :デフォルトの名無しさん:2013/03/02(土) 12:22:07.29
LINEAR補間ではなくNEARESTを使え
それで駄目なら0.5ずらせ

395 :デフォルトの名無しさん:2013/03/02(土) 12:32:49.99
>>394
やっぱそれくらいの対処しかないですかね?
0.5ずらしたりすると、本来表示したかった端の1px分の模様が狭くなっちゃいますよね
そんな些細なことは諦めるしかないのかなぁ

396 :デフォルトの名無しさん:2013/03/02(土) 12:41:05.99
元から1px小さいサイズに合わせて絵を描いておけば問題ない

397 :デフォルトの名無しさん:2013/03/02(土) 13:20:54.00
シェーダで TexCood を mod すればいい

398 :デフォルトの名無しさん:2013/03/02(土) 13:32:48.06
>>397
フラグメントシェーダー内で texture 関数に渡すテクスチャ座標を mod で調整しても、
glTexParameter系関数でテクスチャ フィルタを GL_LINEAR に設定されていれば、
指定した座標の周囲4テクセル分が加重平均されて隣のキャラクタの色が混じるよ。

399 :デフォルトの名無しさん:2013/03/02(土) 13:37:44.04
言われてみればそうだった

400 :393:2013/03/02(土) 14:04:26.61
>>396
そうすると、64*64の画像に32*32のキャラを4枚詰めるのは無理になりますよね…

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

何かしら妥協するしかないようですね。
ありがとうございました。

401 :デフォルトの名無しさん:2013/03/02(土) 14:21:47.22
1.1使えや

402 :デフォルトの名無しさん:2013/03/02(土) 15:27:39.23
キャラが違うなら別テクスチャにしちゃってもいいんじゃないかな

403 :デフォルトの名無しさん:2013/03/02(土) 15:53:10.69
1キャラクターがアニメーションさせたいのではなく
1枚のテクスチャーに複数のキャラクターか
止めとけとしか

404 :デフォルトの名無しさん:2013/03/02(土) 15:54:26.42
テクスチャの解像度上げて加工してみるとか。うちも色混ざってるのかな
ドット絵で右と下1ドット空けてるから平気なのかも。

405 :デフォルトの名無しさん:2013/03/02(土) 16:33:38.89
>>403
なぜ止めた方が良い?

例えば1枚のテクスチャにアルファベットや数字を並べて、
そのテクスチャを参照してテキストを描くことはよくあるけど、
これは本質的には1枚のテクスチャーに複数のキャラクターと同じではないの?

406 :デフォルトの名無しさん:2013/03/02(土) 16:57:45.36
端のピクセルの中心座標は(0,0)ではなかったんじゃ
ピクセルの大きさの半分だけオフセットさせとけば問題ないんじゃね?
ドットバイドットで描画するならバイリニアフィルタも関係なくなるし

407 :デフォルトの名無しさん:2013/03/02(土) 17:35:21.03
1ドット以上空けて絵を並べるのは常識

408 :デフォルトの名無しさん:2013/03/02(土) 17:52:13.32
俺はリニア補間するときに確実に透明な幅を存在させるために2ドットあけちゃう

409 :393:2013/03/02(土) 19:20:04.49
>>407
やっぱそうなんだ
勉強になりました

410 :デフォルトの名無しさん:2013/03/02(土) 19:37:38.05
あ、あの、あのね、怒らないで聞いてね
ありんこ一匹通さないヌリカベみたいに通路をふさぐことを売りにするキャラがいて
1ドット空いちゃうとありんこがいっぱい通っちゃって困ると思うんですが・・・
そういう場合どうしたらいいのでしょうか

411 :デフォルトの名無しさん:2013/03/02(土) 19:49:09.76
それでいいならかまわんが全然勉強になってなくね>>406の例や滲む理由がわかってない
1ドット空けなくても滲まないのが正常だと思うのだが

412 :デフォルトの名無しさん:2013/03/02(土) 20:02:07.49
補間するからさ

413 :デフォルトの名無しさん:2013/03/02(土) 20:42:57.85
>>410
テクスチャに描かれたイメージ群は、
それぞれ隣のイメージと1ドット(テクセル)空けてあったとしても、
それをポリゴンに貼る際に参照するテクスチャ座標を正しく選べば、
空けた1ドットの部分は参照されない。

この説明では分かりづらいでしょうか。

414 :デフォルトの名無しさん:2013/03/02(土) 21:06:48.75
画面を32x32のチップで敷き詰めて構成する、かつWindowサイズを変更して伸張可能という仕様で
Windowのデフォルトのクライアントサイズは640x640のとき
デフォルトではテクスチャは等倍で描画されるのが好ましい
つまり画面上のピクセルとテクスチャのピクセルが完全に1対1で対応して欲しいんだけど
1ドットあけると31x31のテクスチャになってしまって引き伸ばされてぼやけて見えてしまう←これが問題
しかしニアレストネイバーに設定するとWindowサイズが変更された場合は補間して欲しいので困る
Windowサイズによってテクスチャの補間方法を切り替えるくらいしか対応策が思いつかないんだけどそれってどうなのってところ

415 :デフォルトの名無しさん:2013/03/02(土) 21:30:59.60
視点を離して補完を切れば解決だな

416 :デフォルトの名無しさん:2013/03/02(土) 22:08:03.97
ひとつのチップが占有する領域を33x33にしてそのうち32x32を使えばいいじゃん・・

417 :デフォルトの名無しさん:2013/03/02(土) 22:51:16.11
>>416
33じゃそもそもチップの座標を正確に表せないからその時点でピクセル単位での指定が
できなくなっちゃうじゃない

418 :デフォルトの名無しさん:2013/03/02(土) 22:56:53.49
なんで正確に表せないと思ったんだ?

419 :デフォルトの名無しさん:2013/03/03(日) 02:39:21.98
テクスチャ
 0123456
0□□□□□□□
1□■■□■■□
2□□□□□□□

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

画面
■■■■

蟻が通る隙間はない

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

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

なんで

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

ってなる

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

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

スレ汚しスマソ

422 :デフォルトの名無しさん: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すればいい話ではないのかな?

423 :デフォルトの名無しさん:2013/03/03(日) 08:38:19.46
0.5ずらせよ・・・
その絵が書けるならもう分かってるんだろ
ピクセルの中心位置は整数座標にはないんだよ

424 :デフォルトの名無しさん:2013/03/03(日) 10:27:55.54
GeForce GTX TITAN すげー

425 :393:2013/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

426 :デフォルトの名無しさん:2013/03/03(日) 13:19:28.07
OpenGLで2Dゲーム作る場合glOrthoでWindowのピクセル数と一致させる方が(-1.0〜1.0)とかのサイズにするよりメジャー?

427 :デフォルトの名無しさん:2013/03/03(日) 15:21:20.60
俺はGL座標系に慣れるために+1-1でやってるな、メジャーかは知らないが

428 :デフォルトの名無しさん:2013/03/03(日) 16:11:20.76
>>425
> 元画像でキャラごとに1ドット空けることで回避することにします(これが期待値)
さらに言うと、空けた1ドットをこの場合は黄色で書いておかないと
縁が薄く黒ずんだりする。

429 :デフォルトの名無しさん:2013/03/04(月) 13:48:41.40
gl.h と glext.h だけ使って勉強したいんだけどどういう方法がオススメかな?
glu.h とか glaux.h とか glut.h とか glfw.h とか使いたくない感じです。
やっぱり NeHe あたり?

430 :デフォルトの名無しさん:2013/03/04(月) 17:56:12.35
何がやりたいのか明確に
OpenGLの勉強がしたいのならglutを使わない理由がない
もっとローレベルのウィンドウ作ってOpenGLコンテキスト作りたいだけなら
適当にその辺のドキュメントを読め

431 :デフォルトの名無しさん:2013/03/04(月) 21:32:28.13
DirectXおすすめ
DirectX使えばOpunGLが糞だと分かる

432 :デフォルトの名無しさん:2013/03/04(月) 21:35:12.58
>>431
レイヤ違い&スレ違い&キチガイ
去れ

433 :デフォルトの名無しさん:2013/03/05(火) 00:35:12.23
DirectXがそんなに素晴らしいものなら任天堂やソニーのゲーム機とか
AndroidやアップルのOSにも採用されてるはずだわ

434 :デフォルトの名無しさん:2013/03/05(火) 00:41:39.24
素晴しいものこそが採用されるなんて幻想は捨てたほうがいい
DirectXが素晴らしいのかどうかは置いといて

435 :デフォルトの名無しさん:2013/03/05(火) 07:53:26.17
DirectXなんて素晴らしくないよ、普通レベル
但しOpenGLは産廃レベル

436 :デフォルトの名無しさん:2013/03/05(火) 08:51:04.96
いつのOpenGLの話をしてるんだw
今の4.2系列はかなりマシだぞ

437 :デフォルトの名無しさん:2013/03/05(火) 14:26:26.12
>>430
demo の64kとかを作るために容量削ろうと思ってるんですが、
初めはglut込みで勉強して、
後から使わないように変更するって方法がよさそうですかね?

438 :デフォルトの名無しさん:2013/03/05(火) 21:09:38.93
これからの時代は、AVXとOpenCLで自力レイトレだよ!

OpenGLだのDirectXだのなんて、しょせんは光の「現実」をまるで無視したごまかしだからね

439 :デフォルトの名無しさん:2013/03/05(火) 21:18:19.37
光の「現実」って、電磁波のシミュレートか

もうリアルタイムでできる時代なのかぁ

440 :デフォルトの名無しさん:2013/03/05(火) 21:53:38.61
レイトレは量子力学的に光の現実じゃないだろ・・・

441 :デフォルトの名無しさん:2013/03/05(火) 22:47:07.26
まぁ、レイトレが光の現実とは言ってないけどね。
フォトンマッピングとか言えばいいのか?

442 :デフォルトの名無しさん:2013/03/05(火) 22:51:34.60
ぷっ

443 :デフォルトの名無しさん:2013/03/05(火) 22:57:33.74
レンズフレアとかブルームって、レイトレでどうやってシミュレートするの?
>>441 の言うフォトンマッピングでもいいけど。

まだまだとても現実的な時間でシミュレートできるとは思えん。
もちろん OpenGL や DirectX などが普通にリアルタイムで処理している
光の「現実」をまるで無視したごまかし映像より良く見えないと意味が無いし。

444 :デフォルトの名無しさん:2013/03/05(火) 23:00:49.40
現実の光景だって脳がシミュレートした結果なんだからこだわっても仕方なくね

445 :デフォルトの名無しさん:2013/03/05(火) 23:01:55.91
>>441
量子力学に弱いならもうそれ以上はやめた方がいい
フォトンマッピングじゃ二重スリットすら現実に沿ってレンダリング出来ないだろ

446 :デフォルトの名無しさん:2013/03/05(火) 23:06:22.62
glBlitFramebuffer()とかの"blit"ってそういう英単語があるのかと思ってたら
BLock Image Transferの略だったのか。今知った

447 :デフォルトの名無しさん:2013/03/05(火) 23:22:43.14
iが入ってるのは珍しいな
よくあるのはBltでBLock Transferの略っていうのだけど

448 :デフォルトの名無しさん:2013/03/06(水) 10:16:46.67
>>434
全く同意
民主党ですら政権とれたくらいだし
広告代理店とつるんで宣伝する能力の方が大きい
要はステマ

449 :デフォルトの名無しさん:2013/03/10(日) 02:25:43.78
フォトンマッピングも広い意味でレイトレに属するけど、全部光線光学で処理しているから波動光学的、量子光学的な現象はそのままではシミュレートできない。
でも日常的な情景のほとんどは光線光学でリアルに表現できるし、分散や干渉、回折のような波動光学的エフェクトもモデル化次第である程度は表現可能。

450 :デフォルトの名無しさん:2013/03/10(日) 09:43:55.26
光の基本的要素である波長を扱ってない時点でお察しくださいとしか

451 :デフォルトの名無しさん:2013/03/10(日) 10:39:14.84
薄膜で虹が出たら格好良いね

452 :デフォルトの名無しさん:2013/03/10(日) 11:28:28.28
光速も無視してるよね。あと重力とか。

453 :デフォルトの名無しさん:2013/03/10(日) 12:22:45.56
重力に関しては光子は質量ゼロとされてるしあったとしても無視できるんじゃね?
強いて言えばルミネセンスにおけるエネルギー変換で関係するくらい?

いずれにしてもOpenGLがカバーする範疇でないし
GPGPUとしてシミュレートするにしても
当分物理モデルで頑張るよりビヘイビアモデルのほうが
「それらしい」結果が得られるのは間違いない

454 :デフォルトの名無しさん:2013/03/10(日) 12:41:00.87
重力レンズでぐぐ

455 :デフォルトの名無しさん:2013/03/10(日) 14:17:26.50
重力レンズは光というより空間が歪んだ結果だから
非ユークリッド空間(リーマン幾何学?)を扱うところから議論しないといけないんでね?

空間が歪むような質量と日常的な物体の質量を
単精度で同時に扱うのは工夫が要るだろうし
最終的な可視化部分以外でOpenGLを使うメリットはないわな

456 :デフォルトの名無しさん:2013/03/13(水) 17:17:20.90
GeForce GTX TITAN が最強すぎる件

457 :デフォルトの名無しさん:2013/03/13(水) 17:28:56.60
知るかボケ

458 :デフォルトの名無しさん:2013/03/14(木) 16:17:17.27
>>299
必要な配列の大きさの分mallocするまでROMな^^

459 :デフォルトの名無しさん:2013/03/14(木) 20:24:37.12
>>456
あの価格で、Teslaに近い倍精度浮動小数点演算性能を持っているところが個人的にイイ。

460 :デフォルトの名無しさん:2013/03/15(金) 18:50:17.88
一般相対論扱うならテンソル方程式を解かせるという基地外じみた事になる
しかも日常的なものなら光速も重力も殆ど影響しないという

461 :デフォルトの名無しさん:2013/03/15(金) 19:14:15.83
非日常を描くゲームもある

462 :デフォルトの名無しさん:2013/03/15(金) 19:53:15.19
高校生がセックスするエロゲーとか非現実的過ぎるよな

463 :デフォルトの名無しさん:2013/03/15(金) 19:54:26.51
家具屋姫

464 :デフォルトの名無しさん:2013/03/15(金) 20:36:33.10
>>462
俺が高校生だった時は、俺以外はみんな普通にセックスしてたぞ

465 :デフォルトの名無しさん:2013/03/15(金) 21:33:10.91
>>464
ホモですか?

466 :デフォルトの名無しさん:2013/03/15(金) 23:02:49.46
ここにいる性欲猿は在日朝鮮人

467 :デフォルトの名無しさん:2013/03/16(土) 04:22:52.61
愚かなフラグメントよ・・・

468 :デフォルトの名無しさん:2013/03/17(日) 21:37:27.57
https://www.youtube.com/watch?v=9vTI0c56vCc

469 :デフォルトの名無しさん:2013/03/17(日) 21:42:34.94
DirectX最高!OpenGLは糞!

470 :デフォルトの名無しさん:2013/03/17(日) 21:54:47.31


471 :デフォルトの名無しさん:2013/03/17(日) 22:39:27.72
今時ラスタライズ論者とかないは

472 :デフォルトの名無しさん:2013/03/23(土) 15:06:13.96
>>445
位相情報をもたせたフォトンを使ったフォトンマッピングの拡張って普通にありますよね

473 :デフォルトの名無しさん:2013/03/23(土) 18:31:01.79
量子力学を持ち出すのもおかしな話だと思うけど・・・
二重スリットって結局回折干渉の効果が必要になると思うんだけど
位相情報をもたせたフォトンとやらはどのようにそれを実現するの?
その手法知らないからペーパー教えて。

474 :デフォルトの名無しさん:2013/03/23(土) 19:15:40.78
いい加減スレチ

475 :デフォルトの名無しさん:2013/03/23(土) 20:06:52.73
悔しかったから必死に調べたんだろう。その点は理解も出来る。
だがスレチは帰れ。

久しぶりにレス数増えたと思ったらこれだよ、まともな話題をくれ!

476 :デフォルトの名無しさん:2013/03/23(土) 22:09:16.12
わからないことはマトモな話題じゃなくスレチ

477 :デフォルトの名無しさん:2013/03/24(日) 01:29:10.93
↑分からないからOpenGLとまったく絡まない話だと気づけないバカ

478 :デフォルトの名無しさん:2013/03/24(日) 01:35:27.48
まあどうせ自演だし

479 :デフォルトの名無しさん:2013/03/24(日) 09:30:39.29
俺に任せろ

nvidiaのカードでC#(OpenTK)でトランスフォーム フィードバック バッファーを使おうとすると
varying変数名が必ず文字化けして使えないんだけどどうにか直せないか
コードそのままにatiのカードに取り替えるとちゃんと機能する
数年前からずっとこの調子で早く直せよ糞VIDIA

480 :デフォルトの名無しさん:2013/03/24(日) 12:11:40.83
nvidiaを糞だなんてとんでもない
上品にfuckinvidiaと呼びなさい

481 :デフォルトの名無しさん:2013/03/24(日) 19:08:21.40
>>479
http://www.opentk.com/node/1389
次善策はあるみたいね。

482 :479:2013/03/24(日) 22:57:47.95
それは見たけど無理
どのみちnVIDIAだけの問題だから打つ手はないと思われ

483 :デフォルトの名無しさん:2013/03/25(月) 00:06:42.63
カードに応じてシェーダ切り替えればいい

484 :デフォルトの名無しさん: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/

485 :デフォルトの名無しさん:2013/03/25(月) 00:51:41.90
ESとはなんだったのか

486 :デフォルトの名無しさん:2013/03/25(月) 01:07:45.33
webglとはなんだったのか

487 :デフォルトの名無しさん:2013/03/25(月) 01:15:13.57
webglになんかあったの?

488 :デフォルトの名無しさん:2013/03/25(月) 08:45:34.35
AppleとMSがやるきナッシング

489 :デフォルトの名無しさん:2013/03/25(月) 09:27:05.55
webgl取り込んだらGoogleに負けるの必至だからな

490 :デフォルトの名無しさん:2013/03/25(月) 19:27:51.91
グーグルさんが作ってねじ込めばいい、オラァケツだせぇスパパパン、ずぶっと

491 :デフォルトの名無しさん:2013/03/25(月) 20:41:19.23
IE11に期待したいが……多分載らないだろうな。

492 :デフォルトの名無しさん:2013/03/25(月) 22:35:26.52
まずは、OpenGLがDirectXを飲み込むまで待つしかないな。

493 :デフォルトの名無しさん:2013/03/25(月) 22:53:04.11
Fahrenheit「」

494 :デフォルトの名無しさん:2013/03/27(水) 13:43:55.09
SL#(えすえるしゃーぷ)とは、GPUで実行されるプログラマブルシェーダーを、超高級言語である
C#で書けてしまうという夢のようなオープンソースのフレームワークである。
http://monobook.org/wiki/SL_Sharp

495 :デフォルトの名無しさん:2013/03/27(水) 22:37:38.80
何これw、超面白そうなんですけど
誰かもっと詳しい情報持ってない?

496 :デフォルトの名無しさん:2013/03/28(木) 01:38:56.35
Shader Language Sharpの略である。

497 :デフォルトの名無しさん:2013/03/28(木) 01:45:11.34
シェーダ言語って元から充分に高級言語だし、わざわざ間に何か挟む意味あるかね

498 :デフォルトの名無しさん:2013/03/28(木) 09:10:56.55
Cgさんディスってるの? PSMさんが黙ってないよ?

GLSLは構造体とか配列の扱いがファッキンなのが良くない

499 :デフォルトの名無しさん:2013/03/28(木) 09:34:16.13
最高の頭脳はこんなところで油を売ってる暇はないし
暇があったとしてもとっくに他のコミュニティに移動してる

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

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

最高の頭脳持ってる奴は他のコミュニティに行っても入っていけるから困らなかっただろう
そしてそういったコミュニティで相手にされない奴が集まってるのが2ch

500 :デフォルトの名無しさん:2013/03/28(木) 12:03:06.55
ここは自己紹介スレじゃないよ

501 :デフォルトの名無しさん:2013/03/29(金) 17:00:41.68
>>497
DirectXとOpenGL両対応する場合には必要なんでない?

502 :デフォルトの名無しさん:2013/03/29(金) 19:17:43.04
directxだけでよし

503 :デフォルトの名無しさん:2013/03/29(金) 21:51:33.67
>>502
お前それLinuxでも言えんの?

504 :デフォルトの名無しさん:2013/03/29(金) 22:32:11.23
CUDAだけでよし

505 :デフォルトの名無しさん:2013/03/30(土) 11:39:41.51
お前それRadeonでも言えんの?

506 :デフォルトの名無しさん:2013/03/30(土) 14:37:18.27
OpenGL Insights 日本語版
http://www.amazon.co.jp/dp/4862462014/

原書から10ヶ月も経たずして翻訳された

507 :デフォルトの名無しさん:2013/03/30(土) 16:25:23.83
http://books.google.com/books?id=CCVenzOGjpcC&printsec=frontcover&source=gbs_ge_summary_r&cad=0

508 :デフォルトの名無しさん:2013/03/30(土) 18:23:12.10
>>506
ただし¥13,650

509 :デフォルトの名無しさん:2013/03/30(土) 22:47:36.03
もう既にDirectXは終わってるよね

510 :デフォルトの名無しさん:2013/03/30(土) 23:03:33.56
>>506
日本語訳が酷かった

511 :デフォルトの名無しさん:2013/03/31(日) 01:04:49.40
>>510
危うく日本語版買いそうだった

ありがと、原書の方を買うわ

512 :デフォルトの名無しさん:2013/03/31(日) 04:01:14.22
http://www.amazon.com/dp/1439893764/
ボッタ栗

513 :デフォルトの名無しさん:2013/03/31(日) 10:58:44.09
ボーンデジタルは特定の翻訳者が絡むとボッタクリ価格になる印象

514 :デフォルトの名無しさん:2013/03/31(日) 15:33:02.25
赤本もそうだけど、価格が2倍になるのは止めて欲しいよね。

515 :デフォルトの名無しさん:2013/03/31(日) 22:38:23.59
ゲームなんかで高速にテキスト(文字列)をレンダリングするのって、
やっぱりテクスチャに予め文字を描いておいて、
それを植字する感じで1文字ずつレンダリングしていくしかない?

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

[環境]
OpenGL 4.0 以降

516 :515:2013/03/31(日) 22:49:38.16
>>515
OS を書き忘れました。
linux (Fedora 18) です。


あと、テキストは日本語です。

517 :デフォルトの名無しさん:2013/03/31(日) 23:11:01.20
解像度変更の時に書き直せば良いんじゃないか?
少し荒れて良いなら一番大きく書いた物を縮小でも良し

518 :デフォルトの名無しさん:2013/04/01(月) 01:18:21.27
まずは秒間何文字更新するかを明確にしろ。
内容を変更しないフレーム分は数えるなよ。

519 :515:2013/04/01(月) 20:47:01.97
>>517
つまり、予め文字テクスチャに使うイメージを解像度分用意しておくのではなく、
ゲームが立ち上がってからフォント系 API なんかを使って
テクスチャに必要な分だけ文字を描くという事?。
後は、そのテクスチャを使って植字をするようなテキストを描画し、
解像度が切り替わったら、また文字テクスチャを作り直す、と。


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

今のところプレーヤーが1行ずつメッセージを送る仕組みになってる。
プレーヤーがコピペ機能を使ってメッセージを書き込みまくれば、
秒間数回は更新されるかも知れん。
(更新頻度の制限を設ける事も検討中)

520 :デフォルトの名無しさん:2013/04/01(月) 21:19:26.44
秒間数回の更新程度、描き直したところで誤差程の影響しか出ない。

521 :デフォルトの名無しさん:2013/04/01(月) 21:23:42.55
文字の描画で重くなると言う話はその昔、必要も無いのに毎フレーム全部描き直していた馬鹿が、
自分が無能なのを理解できずに遅い遅いと騒いでいたせいだ。
必要最低限の内容を更新するだけなら、ハイビジョン動画を再生できるこの時代では何の影響も出ない。

522 :515:2013/04/01(月) 21:25:34.09
>>520
ということは、文字を描画するタイミングで、
リアルタイムにグリフを描くわけか。

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

ありがと。

523 :515:2013/04/01(月) 21:27:34.63
>>521
更新せずレスしてしまった。

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

わかった、ありがと。

でも、必要以上に嫌みっぽいレスは正直嫌いだ

524 :デフォルトの名無しさん:2013/04/02(火) 20:55:02.29
3Dって基本全部書き直しじゃないの?

525 :デフォルトの名無しさん:2013/04/02(火) 21:04:54.78
テクスチャの事だろ

526 :デフォルトの名無しさん:2013/04/04(木) 19:21:24.65
IE11にWebGLが実装されているという噂情報が出てきたな。
ワクテカ。

527 :デフォルトの名無しさん:2013/04/05(金) 19:25:01.82
DirectX終了のお知らせ

528 :デフォルトの名無しさん:2013/04/05(金) 19:30:23.53
そして発表されるWebX

529 :デフォルトの名無しさん:2013/04/06(土) 02:15:57.23
あるある

530 :デフォルトの名無しさん:2013/04/06(土) 10:37:36.64
MS-ガンダムX

531 :デフォルトの名無しさん:2013/04/06(土) 12:06:34.50
>>528
IEのみ対応ですね

532 :デフォルトの名無しさん:2013/04/06(土) 13:07:19.08
DirectXは既に終了してるよ。
これからはOpenGLの時代だよ。

533 :デフォルトの名無しさん:2013/04/06(土) 17:14:40.61
IE11のWebGLでちょっと気になるのが、
使えるシェーダーのデフォルトがIESL(HLSLの制限バージョン)になっているらしいという点。
レジストリの変更でGLSLも有効にできるらしいが、どうなることやら。
デフォルトがIESLだったら大ブーイングだろうな。

534 :デフォルトの名無しさん:2013/04/06(土) 20:04:00.31
>>532
OpenGL+何かとDirextXを比較するなら分かるがカバーするレイヤが違うから

535 :デフォルトの名無しさん:2013/04/06(土) 20:07:24.92
コンシューマ向けゲームとかでもシーン切り替え時にゲームディスクガリガリやってasset読み込みんでのに開きっぱでいいおね?とか

536 :デフォルトの名無しさん:2013/04/06(土) 20:32:04.07
きみは何言ってんのかね?

537 :デフォルトの名無しさん:2013/04/06(土) 21:55:58.88
OpenGLやめてCloseGLにしろって事では?

538 :デフォルトの名無しさん:2013/04/06(土) 23:11:52.61
それってMSのあれか

539 :デフォルトの名無しさん:2013/04/07(日) 00:50:19.75
Girls' LoveならOpenだと個人的には興醒めだね

どうせMSが独自規格に走ろうと上位のレイヤが隠蔽するよ
出来ること出来ないことの多くはハードウェアで決まっちゃうんだし

540 :デフォルトの名無しさん:2013/04/07(日) 12:36:16.81
GPUの最新機能はまずOpenGLから使えるようになるんだし

541 :デフォルトの名無しさん:2013/04/07(日) 15:06:28.77
たとえばジオメトリシェーダがサポートされたのが、
Direct3D10で2007年、OpenGL3.xが2008年。
どう見ても後追いなんだが。

542 :デフォルトの名無しさん:2013/04/07(日) 15:19:19.81
その前にベンダー独自の拡張機能でやってなかったっけ
よく憶えてないけど

少なくとも Direct3D では独自の拡張機能は作れん

543 :デフォルトの名無しさん:2013/04/07(日) 15:28:58.98
知りもしないくせに、知ったかするな。

544 :デフォルトの名無しさん:2013/04/07(日) 16:28:52.69
独自拡張を許したらAPIとして統一する意味がなくなる。

545 :デフォルトの名無しさん:2013/04/07(日) 18:27:07.93
nVidiaでもATIでも独自拡張はあるけどな
その中で、これは良いと認められたものがクロノスによって統合される

546 :デフォルトの名無しさん:2013/04/07(日) 18:42:13.82
複数バージョンのAPIが同時に利用されてる状況は
メーカー独自拡張があるのとどう違うんだって話
結局統一なんてできないんだから
だったらメーカー独自拡張自由に追加できるようにしたほうが良い

547 :デフォルトの名無しさん:2013/04/07(日) 18:52:50.37
>>543
すまん、実は全く知らん

548 :デフォルトの名無しさん:2013/04/07(日) 19:19:21.81
>>541
OpenGLがDirectXの機能を部分的に追い越してきたのは、
ごくつい最近の話だからね。
それまでは確かに後追いだった。
最近は状況の変化が特に激しいから、今後の情勢は予測しづらいな。

549 :デフォルトの名無しさん:2013/04/07(日) 19:54:13.08
俺の知ってるOpenGLはグラボメーカーにまったく相手にされてなかったのに時代は変わったな
OpenGLは隠れ家的な安らぎがあった
メジャーなOpenGLなんてOpenGLじゃないただの産業廃棄物だ

550 :デフォルトの名無しさん:2013/04/07(日) 20:58:35.42
自分がOpenGLを使い始めた頃はOnyx REとかIndigo2の時代だったけど、当時そういった
SiliconGraphicsのグラフィックスワークステーションの中でバリバリ活躍していたMIPSも
気がつけばモバイルGPUのPowerVRの会社に買われたと知ったときは流石に遠い目になった。

551 :デフォルトの名無しさん:2013/04/07(日) 21:24:35.20
>>549
あぁわかる

たとえば、自分だけが知ってる超マイナーなはずだった歌手が、
ここのところバラエティに出たり紅白出ちゃったりした時の心境だろ

552 :デフォルトの名無しさん:2013/04/07(日) 23:38:14.37
きみらは一体何の話をしてるんだ???

553 :デフォルトの名無しさん:2013/04/08(月) 00:21:15.38
D3Dみたいにヴァージョン変わったら同時にインターフェースも変わった方が、
その世代にあった使い方を強制してくれるからいいと思うけどね。

554 :デフォルトの名無しさん:2013/04/08(月) 00:56:15.96
互換性って経済を停滞させるよな

555 :デフォルトの名無しさん:2013/04/08(月) 17:55:19.44
>>553
DirectXが廃れた原因の一つがそれ。
ユーザーがついていけなくなる可能性大。
今のやり方でいいよ。

556 :デフォルトの名無しさん:2013/04/08(月) 22:28:01.04
>>555
固定パイプラインがなくすような改悪ついていけないんだが…

557 :デフォルトの名無しさん:2013/04/08(月) 22:38:12.03
根性でついてこい

558 :デフォルトの名無しさん:2013/04/08(月) 23:08:51.20
全てのグラボがシェーダ対応してるわけじゃないんでしょう?
互換性のないプログラムになるじゃん
何も表示されませんでしたって言われた場合にサポート大変じゃん

559 :デフォルトの名無しさん:2013/04/08(月) 23:41:56.14
ガチで業務で使ったりしてるわけじゃないから教えて欲しいんだけど、互換性の無いプログラムになるってのはどういうこと?
いまどきのグラボでも固定機能が残ってるバージョンのOpenGLが使えないわけじゃないんだから、それを使えばOKと素人考えでは思うのだけども。
3.0以降のGLの機能使いつつ、シェーダを使ってリッチな表示をしたいが、あんまりコードの変更なしに古いOpenGLにも対応させたい、みたいな場合に
コストが余計にかかるってこと?
固定機能使ったコードを3.0以降に対応させるのは大変ってのはわかるけど、それはちょっと違う問題だよね。
固定機能をなくす改悪がついていけないってよりは、3.0まで対応してないグラボ以外を排除するかどうかところで決まってくるかと思うんだが。

560 :デフォルトの名無しさん:2013/04/09(火) 00:27:33.03
完全に排除されるまではリスクが大きいくて使えないって事
お金のない研究室ではWin95/NT機とか1.1しか使えないとこもまだまだ現役だし
ネジとか工業製品の3次元形状を表示するだけなら固定パイプラインで十分
古いPCを全部爆破出来ればいいのだけど

561 :デフォルトの名無しさん:2013/04/09(火) 00:38:53.75
それならどのみち今のOpenGLに固定機能がついてたって、新しいOpenGLは使えないんじゃなくて?
固定機能があるかどうかは本質ではないじゃん。

562 :デフォルトの名無しさん:2013/04/09(火) 00:52:23.74
何言いたいのかよくわからないけど
あえてサポートする必要がある古い環境を切り捨てて
新しい機能使うなんて本末転倒もいいとこ
1.1は固定機能のみでシェーダ対応してないのは知らないのかな

563 :デフォルトの名無しさん:2013/04/09(火) 01:19:29.70
いや、それは知ってる。
自分が言いたいのは、新しいOpenGLが使えない理由は、
固定機能がなくなったという改悪が起こったからではなくて、新しいOpenGLに対応してない環境があって、それをサポートしないといけないからでしょ?ってこと。
仮にOpenGL3.0以降で固定機能がなくなるような「改悪」がなかったとしても、OpenGL1.1の環境をサポートしなくちゃならないならどっちみちOpenGL3.0は使えず、
OpenGL1.1でプログラムを書かないといけないよね。それは固定機能の有無とは関係ないということ。

564 :デフォルトの名無しさん:2013/04/09(火) 01:32:23.63
そうだね、固定機能を1.1とセットで考えるかどうかの違いだね

565 :デフォルトの名無しさん:2013/04/09(火) 02:05:48.95
まあ、固定機能がなくなったってこと自体には面食らったのは同意だけどね。てか、固定機能なくなったのは3.1か。
入門が大変になったなあ、とは思う。まあ、3.1以降の対応が必要になったら考えればいいだけの話だけどね。
多分、3.1以降の機能使いたくなるほど複雑なことやってたら、固定機能の代わりのものを用意するのは手間がかかるだけでそう難しくないことだとはおもうけど。

自分の場合は、iOSでOpenGL ES2.0を触らなくちゃいけなくなって、固定機能はないわ、gl_PointSizeを自前でちゃんと設定しないと点も描画できないわ、
glBeginは使えないわで覚えることがいきなりたくさんあったので、ちょっと敷居高いな、と思った。固定機能程度のことをするのは、ちょっと試行錯誤したら
できるようにはなったんだけどさ。

566 :デフォルトの名無しさん:2013/04/09(火) 07:06:08.37
とっくにサポートが切れたセキュリティーホール空きっぱなしのOSをサポートするのは害悪を広めるだけ。

567 :デフォルトの名無しさん:2013/04/09(火) 09:11:30.48
>>559-560
北朝鮮に期待するしかあるまい

568 :デフォルトの名無しさん:2013/04/14(日) 09:21:34.25
かなりの初心者なんですが少しだけ質問させて下さい。

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

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

何か設定用の関数がありますか?

569 :デフォルトの名無しさん:2013/04/14(日) 13:45:42.28
シェーダ使って自分でやるのが一番確実。

570 :デフォルトの名無しさん:2013/04/14(日) 13:50:09.85
「どのおにぎりがいいかなかあ」
「パンにしなよ」

571 :デフォルトの名無しさん:2013/04/14(日) 14:04:41.04
>>568
そもそも、フォグはどうやって設定しているの?
カメラなどはどうやって設定しているの?

そういった事が分からないと、何が間違っているのか分からない。

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

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

頭がアレなのか?

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

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

頭がアレなのかどうかは知らんが。

574 :─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG :2013/04/14(日) 16:07:32.79
>>573
スクリーンショット見ないと分からないな。

575 :デフォルトの名無しさん:2013/04/14(日) 16:10:52.41
>>573
その通りです!

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

調べてたら↓みたいなページに行き着きました。
ttp://asai-atsushi.blog.so-net.ne.jp/2012-04-16
続けてライブラリのソースも調べてみたいと思いますが
このような問題だとするとこれはどういう問題なのでしょうか?

576 :デフォルトの名無しさん:2013/04/14(日) 16:39:43.28
ステートじゃねえの

577 :デフォルトの名無しさん:2013/04/14(日) 16:57:38.11
>>576
なんというかその時の設定状態で
上手くカメラの座標が反映されてないという事なのでしょうか?

578 :デフォルトの名無しさん:2013/04/14(日) 17:10:32.99
ワールド空間でフォグがかかると決まっているのであれば
カメラを固定してオブジェクトのみを動かすというバッドノウハウも

579 :デフォルトの名無しさん:2013/04/14(日) 17:15:00.63
>>578
そうですね。
出現するオブジェクトの数は少ないので
どうしても分からない場合はそうしようと思います。

580 :デフォルトの名無しさん:2013/04/14(日) 17:47:41.59
>>577
lookat指定とfog指定の順番が違うとか
初学者はしょうもないとこでミスってることが多いから
質問するときはソース出さないとなんとも言えない

次スレのテンプレで質問する場合は必要最低限のコード提示必須って書こうぜ

581 :デフォルトの名無しさん:2013/04/14(日) 18:03:06.53
>>580
ソース出したいんですが殆どメインの部分は
ライブラリのコードで膨大にあるし
全体像がよくつかめてないまま弄ってることもあって
ちょっと直ぐには無理っぽいですね…

もうちょっと自分で頑張ってみます。

582 :─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG :2013/04/14(日) 19:53:04.74
>>581
おまえバカかw

そんなの自分でさっさとやれw

583 :デフォルトの名無しさん:2013/04/14(日) 19:59:14.94
とりあえず人のコードあんま弄ると
変な不具合出るとやなので
>>578のやり方で今回はガマンすることにしました。
お騒がせしました!

584 :─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG :2013/04/14(日) 20:35:32.35
すげーバカw

585 :デフォルトの名無しさん:2013/04/14(日) 20:36:13.37
↑こいつ誰?

586 :─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG :2013/04/14(日) 20:38:15.54
会社の業務をここで聞くのはアウトだぞw

587 :デフォルトの名無しさん:2013/04/14(日) 20:53:20.47
無能はコンソール研究所(笑)にでも引きこもってろ

588 :─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG :2013/04/14(日) 21:05:04.15
宿題聞いたり業務聞いたり大忙しだなw

2chなくなったら日本終了かもな(ゲラゲラ

589 :デフォルトの名無しさん:2013/04/14(日) 21:24:47.48
>>586
すまん、3年前にこの板で訊いた質問の答えをそのままプログラムにしたものが、
今も日本インフラを支えている。

590 :─☆─ [ X | I.I.T. ] COURANT DE CONSOLE ◆TXFAX7cidQpG :2013/04/14(日) 21:28:48.34
>>589
俺の回答を期待してるんだったら、それはやめた方がいいだろうなw

591 :デフォルトの名無しさん:2013/04/14(日) 21:33:04.62
折角コテ付けてるんだから、男は黙ってNG

592 :デフォルトの名無しさん:2013/04/14(日) 21:39:22.21
Pacific Graphics 2011 の論文「Interactive Indirect Illumination Using Voxel-Based Cone Tracing」のボクセライズでは、なぜOpenGLのデプステストをDisableにしているんですか?

593 :デフォルトの名無しさん:2013/04/28(日) 01:13:41.08
教えてください、GLFW って何の略称なんでしょうか?
サイトやマニュアルをサラっと見ても分かりませんでした・・・

594 :デフォルトの名無しさん:2013/04/28(日) 10:16:55.89
なぜ略称にそこまで拘るのか

595 :デフォルトの名無しさん:2013/04/28(日) 11:31:55.51
GL FrameWorkじゃねーの

596 :デフォルトの名無しさん:2013/04/28(日) 11:35:16.36
FireWall

597 :デフォルトの名無しさん:2013/04/28(日) 12:22:54.54
ハカーがレンダリングの邪魔するんですね

598 :デフォルトの名無しさん:2013/04/28(日) 12:32:24.67
fool wonder

599 :デフォルトの名無しさん:2013/04/28(日) 21:57:00.89
God Level Fantasy World!!!!

600 :デフォルトの名無しさん:2013/04/30(火) 02:54:33.88
main(){
Display(){
f1(){
while(1){
特定キーが入力されるまで待ち状態
それ以外はキーに応じて画面が変化}
f2(){
while(1){
特定キーが入力されるまで待ち状態
それ以外はキーに応じて画面が変化}
}}}
各f()内で無限ループを使わなければキー入力を受け付けるんですが,
無限ループの際に入力待ちをすることでキー入力を受け付けるようにはできないのでしょうか?

601 :デフォルトの名無しさん:2013/04/30(火) 03:22:19.03
スレッドを分ける

602 :デフォルトの名無しさん:2013/04/30(火) 12:05:50.16
つーか、状態管理すればいいだけじゃないの?

603 :デフォルトの名無しさん:2013/04/30(火) 20:35:55.77
>>601 >>602
ありがとうございます.
スレッドに関して調べてやってみます.
おすすめのページがあれば教えてくださいm(_ _)m

604 :デフォルトの名無しさん:2013/04/30(火) 23:13:20.85
>>603
安易にスレッドを使えばいいってもんじゃない。
この場合は状態遷移で対応すべし。

605 :デフォルトの名無しさん:2013/05/01(水) 01:15:21.81
>>604
whileをなくし,mainの無限ループのみを用い,switchと併用して,
キー入力後に描画へ遷移するように実装しましたm(_ _)m

606 :デフォルトの名無しさん: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 が出た

607 :606:2013/05/03(金) 21:17:14.73
× layout(binding=0)
○ layout(location=0)

608 :デフォルトの名無しさん:2013/05/16(木) 10:35:52.73
3Dプリンタの出力ってどうすんの?

609 :デフォルトの名無しさん:2013/05/16(木) 11:10:24.79
スレチ

610 :デフォルトの名無しさん:2013/05/18(土) 14:22:42.00
OpenGL ES 2.0でテクスチャのアルファが0の部分を抜いて
描画したい場合、一般的にどうするものなのでしょうか?

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

チップ(PowerVR)の開発者向けサイトにあった
パフォーマンスに関する資料にもdiscardは大幅な速度低下を
引き起こすので極力使うのを避けた方がよい、という記述がありました。

611 :610:2013/05/18(土) 14:25:15.86
アルファブレンド(GL_BLEND)の方で描画すると、アルファが0の部分の
デプス値も更新されてしまい、重ねあわせの問題が出て来てしまいます。
描画順を入れ替えて奥から順番に描画すればこの問題も回避出来ますが、
他に良い方法があるのではないかと思い、質問させてもらいました。

612 :デフォルトの名無しさん:2013/05/18(土) 20:07:05.04
glAlphaFunc

613 :デフォルトの名無しさん:2013/05/18(土) 20:49:21.99
>>612
ES2でどうやって使うのか答えてみろよ、無能。

614 :デフォルトの名無しさん:2013/05/18(土) 21:06:58.56
なんで喧嘩腰なの?

615 :デフォルトの名無しさん:2013/05/18(土) 21:17:51.02
mixでは使い物にならないくらい遅いって事かな?

616 :デフォルトの名無しさん:2013/05/18(土) 22:10:34.85
alpha to coverage使えるならそれで
ダメなら奥から描画するしかないね仕方ないね

617 :デフォルトの名無しさん:2013/05/19(日) 09:49:40.43
OpenGL ES2 スレ独立させた方がいいね

618 :デフォルトの名無しさん:2013/05/19(日) 15:02:22.88
C++でゲーム作ってて、今までDXライブラリに丸投げしてたんだけど、
OpneGLに移るのにSDLとGLFWだったらどっちが馴染みやすいかな?
OpenSceneGraphもちょっと気になる。QtはAndroidみたいで窮屈だね

619 :デフォルトの名無しさん:2013/05/19(日) 16:40:13.12
そもそも無駄にライブラリを使うという発想を、
軌道修正するところから始めた方がいい。
本当は必要ないのに使わなければならないという固定観念に縛られていないか?

620 :610:2013/05/19(日) 16:44:40.99
皆様レスどうもありがとうございます。

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

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

>>616
alpha to coverageですか。
情報ありがとうございます。調べてみます。

621 :デフォルトの名無しさん:2013/05/19(日) 17:34:51.36
形状の変化や位置の移動が少ないのなら、
専用のステンシルバッファを作って、
以降それでマスクすればいい。

622 :デフォルトの名無しさん:2013/05/19(日) 17:46:25.76
gl_FragDepth で -1 とか返せば

623 :610:2013/05/19(日) 18:19:05.76
情報どうもありがとうございます。

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

>>622
gl_FragDepthは使った事がありませんでした。
なるほど、アルファが0のフラグメントのデプスを書き換えれば
デプステストで抜けるという事ですね。今度試してみます。

624 :デフォルトの名無しさん:2013/05/20(月) 21:15:30.82
ES2じゃgl_FragDepthは使えないでしょ

625 :デフォルトの名無しさん:2013/05/20(月) 23:35:15.96
射影変換して表示したテクスチャの、実際のウィンドウ上の座標を調べる方法はあるでしょうか?

たとえば、500×500の画面に、500×500の四角を表示するとします。
最初は{0, 0}〜{500,500}ですが、zの値を変えていくと
ウィンドウ内に実際に書かれている四角は{25,25}〜{475,475}、{100,100}〜{400,400}……と、
だんだん小さくなっていきますよね。
この変換後の座標を調べる方法があったら、教えていただけないでしょうか。

626 :デフォルトの名無しさん:2013/05/21(火) 00:21:01.97
GLU使っていいならgluProject()
ダメならオブジェクト座標から順番に座標変換してってウィンドウ座標求める。
座標変換の仕方はググるか親切な>>626に教えてもらってね☆

627 :デフォルトの名無しさん:2013/05/21(火) 00:31:20.34
次の人指すつもりが自分指してしまった・・・アホスw
という訳で簡単に書くと、オブジェクト座標にModelviewMatrixかけて
ProjectionMatrixかけてwで割ってビューポート変換すればウィンドウ座標になる・・・はず。

628 :デフォルトの名無しさん:2013/05/21(火) 00:58:11.28
なんて優しい>>626>>627

629 :デフォルトの名無しさん:2013/05/21(火) 03:35:33.39
http://www.songho.ca/opengl/gl_transform.html
ここら辺読むと良いよ

630 :デフォルトの名無しさん:2013/05/21(火) 07:05:43.93
フラグメントシェーダでとれるから、
マルチレンダリングして必要な情報をとれば無駄が発生しない。

631 :625:2013/05/21(火) 17:10:21.02
みなさん親切にありがとうございます!
リンクアドレスは開いた瞬間くらっときてしまいましたが、
がんばって読んでみます。
ありがとうございました。

632 :デフォルトの名無しさん:2013/05/22(水) 12:10:22.79
すいません、質問させてください。

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


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

という状態で、失敗する理由がこれ以上思い当たりません。
なにとぞよろしくお願いします。

633 :デフォルトの名無しさん:2013/05/22(水) 12:16:08.69
単純に行列が狂ってるんじゃね。

634 :デフォルトの名無しさん:2013/05/22(水) 12:16:40.18
何をもって失敗と言っているのか不明

635 :デフォルトの名無しさん:2013/05/22(水) 14:29:17.38
奥から描いてない
右回り左回りを混ぜてる

636 :デフォルトの名無しさん:2013/05/22(水) 21:39:55.62
glRenderbufferStorageのinternalformatに対応していないformat渡してるとか。
glCheckFramebufferStatusでGL_FRAMEBUFFER_COMPLETEがちゃんと帰って来てる?

637 :デフォルトの名無しさん:2013/05/23(木) 12:50:34.36
>>632です。
632の時点では、z座標を無視して描画した順に上書きされてしまう問題が出ていました。
これは単純ミスでした。(depthバッファを渡すところでcolorバッファを渡していました)
しかし、このミスを直したところ今度は何も表示されなくなりました。
glCheckFramebufferStatusは問題ないようなのですが。
右回り左回りというのを調べてみます。

638 :デフォルトの名無しさん:2013/05/23(木) 13:18:38.06
カリングがオフなら関係ない希ガス

639 :デフォルトの名無しさん: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 ) ( 省略 )

640 :デフォルトの名無しさん:2013/05/23(木) 13:22:26.34
大抵のバグは本人が関係ないと思って省略している部分にあったりする。

641 :デフォルトの名無しさん:2013/05/23(木) 17:28:25.26
今度は何も表示されなくなりました(笑)

表示できるようになってからまたおいで

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

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

右回り左回りというのは、関係なかったみたいです。

643 :デフォルトの名無しさん:2013/05/23(木) 17:57:09.92
> glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, framebufferWidth, framebufferHeight);

GL_DEPTH_COMPONENT32 にしてみたら

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

645 :デフォルトの名無しさん:2013/06/02(日) 19:17:49.81
glTranslatef とかだって glPush〜Pop 以上に自分で作るのは簡単なのに存在する。

たぶん、最適化どうのこうのより、その API を作るにあたって基にした
3D オブジェクトを扱う考え方や思想が反映されているのだと思う。

646 :デフォルトの名無しさん:2013/06/02(日) 21:21:51.74
旧世代の関数の話を未だに持ち出す奴って、
この10年いったい何をして生きてきたんだろう?

647 :デフォルトの名無しさん:2013/06/02(日) 21:38:59.81
固定機能シェーダーなどいろいろ旧世代の関数が廃止された OpenGL 3.x 以降の入門書ってなんで無いんだろ

648 :デフォルトの名無しさん:2013/06/03(月) 19:47:19.84
ただのマスターベーションだからですよ

649 :デフォルトの名無しさん:2013/06/03(月) 20:59:26.18
シェーダなんて書けましぇーんだ!

650 :デフォルトの名無しさん:2013/06/03(月) 21:39:51.68
シェーダーもそうだけど、頂点データの扱いも OpenGL 3.x 辺りで大きく変わったじゃん

入門書書いて金稼いでる奴らにとってはネタの宝庫だと思うんだがなぁ

651 :デフォルトの名無しさん:2013/06/03(月) 22:15:45.21
今、技術系の書籍を出したって売れやしない。

652 :デフォルトの名無しさん:2013/06/03(月) 23:55:25.86
もう需要もESの方しかないしね。
そうなるとOpenGL本ではなく、スマートフォンのプログラム本になる。
で、現在に至る。

653 :デフォルトの名無しさん:2013/06/04(火) 02:18:54.29
シェーダ使ってもろくな物つくらないから、仕方ないね

654 :デフォルトの名無しさん:2013/06/04(火) 07:01:59.62
でもなんか、OpenGLとOpenGL ESが統合されるんじゃないかって噂が一部で出てるじゃない?
モバイルGPUも性能が高くなって、これからはフルOpenGLを実装できるようになってきたかららしいけど。

655 :デフォルトの名無しさん:2013/06/04(火) 21:17:50.51
モバイルのビデオチップの性能がPCと同レベルになっている現在、
ESの存在価値はほとんど無くなってしまった。
すでにCore2時代のIntelのオンボードレベルなら超えてしまっている。

656 :デフォルトの名無しさん:2013/06/05(水) 00:12:24.52
同じにはならんよ
モバイルには固定パイプラインは実装されないだろうし

657 :デフォルトの名無しさん:2013/06/05(水) 07:02:35.49
ES1で固定機能は使えるが、いったい何を言ってるんだ?

658 :デフォルトの名無しさん:2013/06/06(木) 06:38:22.04
>>656
かもね。だから、いわゆる固定機能を除いたCore Profileだけの実装になるかもしれない。
それでもESでないOpenGLがモバイルに載る事を期待しちゃう俺ガイル。
あとWebGLもそうなってほしい。

659 :デフォルトの名無しさん:2013/06/06(木) 07:05:13.22
上位互換の問題があるから外せないよ。
本当にどうしようも無い馬鹿だな。

660 :デフォルトの名無しさん:2013/06/06(木) 07:08:34.07
>モバイルには固定パイプラインは実装されないだろうし
もう恥ずかしいから、恥の上塗りはやめた方がいいぞ。

661 :デフォルトの名無しさん:2013/06/07(金) 03:02:46.29
固定パイプラインが互換上 ES1としてサポートされつづけるにしても、
ハードウェアの実装(トランジスタ)としてはない、という意味でいいたかったんじゃまいか。
フットプリントやコストのかねあいから、モバイルではシェーダーハードウェアで固定パイプラインを模擬している気がするけど、どうなん?
ごめん。詳しくないから想像で言ってるが。

662 :デフォルトの名無しさん:2013/06/07(金) 07:08:39.42
擬似的にでもサポートされれば、統合に何の支障も無いだろう。
PCのビデオカードたって同じような状態なんだし。
結局のところ「同じにはならんよ」という意味が全く不明。

663 :デフォルトの名無しさん:2013/06/08(土) 01:09:22.30
モバイルだろうとPCだろうと「固定」パイプラインといっても現状のGPUは全部プログラマブルシェーダー上で実行しているだろう。

664 :デフォルトの名無しさん:2013/06/08(土) 05:24:02.71
何を勘違いしてるのか知らんが
OpenGL ES 2.0には固定パイプラインは存在しない
シェーダパイプラインしかない

665 :デフォルトの名無しさん:2013/06/08(土) 07:06:08.40
>>664
ES1では固定機能が使えるから、固定機能が理由で統合に支障が出ることはあり得ないという話をしているのに、
突然ES2の話を始めるとは、とんでもないアスペルガーだな。
リアルでも周りから、突然何を言っているんだこいつという反応を返されることが多いだろう。

666 :デフォルトの名無しさん:2013/06/08(土) 07:21:55.76
おまえらってほんとどうでもいいことで喧嘩始めるよな

667 :デフォルトの名無しさん:2013/06/08(土) 13:26:34.93
固定機能が理由で統合に支障が出るなんて誰が言ってるんだよw
突然何を言ってるんだ?

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

OpenGL 3.1以降でも固定パイプライン必須だったらモバイルはGLESのままだっただろうな

668 :デフォルトの名無しさん:2013/06/08(土) 14:00:32.62
必須だろうが無かろうが、統合に固定云々なんて何の関係も無い。

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

統合の話もこれからされるかもしれないと言うだけで、
現時点で統合が明確になっているわけでも何でも無いんだが、
どれだけ知ったかぶりをすれば気が済むんだ?

669 :デフォルトの名無しさん:2013/06/08(土) 14:05:25.41
>>656が知ったかで馬鹿なことを書き込むからこういう流れになるんだよ。
知らないなら余計なことを言わなければいいのに。

670 :デフォルトの名無しさん:2013/06/08(土) 15:49:49.01
自己紹介乙

671 :デフォルトの名無しさん:2013/06/08(土) 17:41:47.00
じゃあ
>モバイルには固定パイプラインは実装されないだろうし
これの弁解を聞こうか。
知ったか以外になにかあるんだろう?

672 :デフォルトの名無しさん:2013/06/08(土) 18:00:01.13
あとはこれ
>OpenGL 3.1以降でも固定パイプライン必須だったらモバイルはGLESのままだっただろうな
未だに統合されたわけでも何でも無いのに、いつの間にか「ESのまま」が過去形にされている謎のセリフ。
未来人じゃなければ、ただの知ったかだ。

673 :デフォルトの名無しさん:2013/06/08(土) 18:08:24.20
話の流れはよく分からんが、それは単なる仮定法過去じゃないのか

674 :デフォルトの名無しさん:2013/06/08(土) 18:25:16.10
そうすると突然妄想を垂れ流すアスペルガーということになるが。

675 :デフォルトの名無しさん:2013/06/08(土) 18:47:00.70
なんか、そこまでいちいち追及するほど面白いネタでもない気がするんだが。
スルーしてやれよ。

676 :デフォルトの名無しさん:2013/06/08(土) 18:55:20.30
ぷぎゃーm9

677 :デフォルトの名無しさん:2013/06/08(土) 19:19:04.11
統合されても性能差がなくなる訳じゃないだろうから
プログラム書く側からしてみればあんまり関係ないな

678 :デフォルトの名無しさん:2013/06/08(土) 21:21:13.59
えー、最近になって解説サイトみながらシコシコ勉強始めたんだけど
日本語サイトはほとんどver2.0? っぽい固定機能だぜぇ。

なんだろう、悔しいけど新しい参考書買って勉強したほうがええんかな。
でも正直シェーダプログラムとかあまり理解できる気がしないから、
どうせ他人が作ったシェーダのライブラリみたいなの使っちゃいそうなものだが・・・

679 :デフォルトの名無しさん:2013/06/08(土) 21:28:26.85
Direct3Dの書籍が多いから、そちらをやってからOpenGLに入った方が楽。
シェーダの命令自体は書き方が多少違うだけでほとんど同じだから。

680 :デフォルトの名無しさん:2013/06/08(土) 21:30:13.28
ESは3になってもジオメトリシェーダ導入されないと知って落胆した。

681 :デフォルトの名無しさん:2013/06/08(土) 21:42:56.37
ここ半年で出たAndroid機だと、HD解像度でフレーム2万ポリゴン越えの描画しても、
余裕で60FPSとか出せるので侮れない。

682 :デフォルトの名無しさん:2013/06/08(土) 22:07:36.90
ひまわりの本の日本語版格安で売られてるから買えよ

683 :デフォルトの名無しさん:2013/06/09(日) 13:18:22.12
固定機能の方で基本がしっかりしているのなら、
WEBの情報があればシェーダを使うのに入門書なんて不要。

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

そういう人間は入門書なんて見ても無駄。
下手に入門書の書き方をマネすると、それ以外の書き方を一切考えなくなって、
一切応用が利かなくなる。

684 :デフォルトの名無しさん:2013/06/09(日) 13:38:07.19
物理的な本の形でまとまっている、という状態が良いと感じる人も少なくないよ。

固定機能の方で基本がしっかりしていなければシェーダー入門書なんて見ても無駄というのは、
俺も経験して身にしみているので同意だけどね。

685 :デフォルトの名無しさん:2013/06/09(日) 21:34:59.02
固定機能の知識なんていらねえ
最初からシェーダで良い
時間の無駄だ
ttp://www.arcsynthesis.org/gltut/

686 :デフォルトの名無しさん:2013/06/09(日) 21:52:01.55
時間はたっぷりあるだろ

仕事でやってるわけでもあるまい

687 :デフォルトの名無しさん:2013/06/09(日) 22:02:45.77
glutを使うのは駄目パターンの典型。

688 :デフォルトの名無しさん:2013/06/10(月) 02:45:59.68
雰囲気掴むだけで止めて中身に行けばいいけど、そう流れにくいかもね

689 :デフォルトの名無しさん:2013/06/14(金) 01:50:58.64
GLFW3で良い
UIスレッドとOpenGLスレッド分離できるようになったぞ

690 :デフォルトの名無しさん:2013/06/14(金) 02:39:01.52
描画を別スレッドにするってよく聞くけど実際どんな風にやってんの
シーングラフだったらノードをスレッドセーフにしたりすんの?

691 :デフォルトの名無しさん:2013/06/14(金) 02:46:15.43
並列処理にしないなら特に何も考えなくて良いだろ

692 :デフォルトの名無しさん:2013/06/15(土) 08:16:45.48
すみません、導入レベルの質問で恐縮なんですが…
環境はwindows7 64bit、VS2010です

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

freeglut.libまたはglut32.lib、と書かれていますが、これは両方必要なのでしょうか?

693 :デフォルトの名無しさん:2013/06/15(土) 08:27:55.59
主語端折るな
参考サイトってどこだよ
エラー文も貼れ
上記を守ってYahoo知恵袋でも行ってこい

694 :デフォルトの名無しさん: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 が未解決です

695 :デフォルトの名無しさん:2013/06/15(土) 08:55:18.08
どうせlibファイルいれる場所がおかしいとかだろうが

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

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

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

日本語からやり直した方が良いよ浜崎さん

696 :デフォルトの名無しさん: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のどちらかが必要というように読み取れますが、両方ともリンクコマンドラインに追加する必要があるのでしょうか?

697 :デフォルトの名無しさん:2013/06/15(土) 10:20:42.33
馬鹿には無理

698 :デフォルトの名無しさん:2013/06/15(土) 13:06:33.62
>>696
freeglutを使うならglut32.libは必要ない。 freeglut.h をインクルードして freeglut.libをリンクする。

699 :デフォルトの名無しさん:2013/06/16(日) 21:50:11.19
ヘッダファイルをincludeすれば勝手にかならずリンカに必要なライブラリファイルの名前が伝わるわけではないよ。
#pragma linkとかそういう表記がなければ、自分でリンカの追加の依存ファイルに追加しないとリンクしてもらえない。

700 :デフォルトの名無しさん:2013/06/16(日) 22:05:05.14
>>699
ところがglut.hや freeglut_std.h の中にpragmaが書いてあったりする

701 :デフォルトの名無しさん:2013/06/17(月) 00:48:20.07
glut32.libは確かfreeglut_std.hでは引っ張ってなかったな
だからエラー出てるんだろうけど、なんでそれが必要と吐いてんのかは知らね

702 :デフォルトの名無しさん:2013/06/18(火) 14:25:53.98
>>692です。自己解決いたしました、ご迷惑をおかけしました

703 :デフォルトの名無しさん:2013/06/18(火) 14:40:33.09
質問文がすでにアレだが
「自己解決した」と書いて原因と解決策を書かないのは
ただレスを無駄に消費する本当のクズだぞ

704 :デフォルトの名無しさん:2013/06/18(火) 14:53:56.44
64bit用にfreeglut.lib、freeglut.dllを生成した上で、ProgramFile(x86)の方に入れてしまっていたため,freeglut.libを見つけて読み込んでもビルドできなかった、というミスでした
32bit設定で生成しなおして入れなおしたところ、無事動きました

スレ汚し失礼いたしました

705 :デフォルトの名無しさん:2013/06/18(火) 14:56:11.37
言われたときはピンと来てなかったんだろうが、>>695のどうせ、がそのままだな

706 :デフォルトの名無しさん:2013/06/20(木) 18:50:27.14
C++で記述されているOpenGLでパーティクルを表示するプログラムが記載されているサイトなどご存知ないでしょうか。
もしご存知のかたがおりましたらそのサイトを教えて下さい。
よろしくお願いします。

707 :デフォルトの名無しさん:2013/06/20(木) 22:22:23.27
ttps://www.google.co.jp/search?q=opengl+c%2B%2B+particle

708 :デフォルトの名無しさん:2013/06/22(土) 23:34:21.14
>>707
ありがとうございます。
ただ当方英語がわからずC++の知識及びOpenGLの知識も浅いためソースコードを見ても
理解が追いつかないところが多々あります。
もしよろしければ日本語での解説が有るところを希望しております。

709 :デフォルトの名無しさん:2013/06/23(日) 01:52:16.31
馬鹿には無理

710 :デフォルトの名無しさん:2013/06/23(日) 03:04:29.59
ひまわりの本に載ってるが
ttp://www.amazon.co.jp/dp/4862461891

711 :デフォルトの名無しさん:2013/06/23(日) 03:50:24.60
>>708
じゃあc++とopenglの知識か英語力付けりゃ解決じゃん
原因分かってんだからやれ

712 :デフォルトの名無しさん:2013/06/23(日) 21:15:54.20
>>711
返信ありがとうございます。
原因はわかっておりますが事情があり1ヶ月〜2ヶ月程度以内にある程度の成果を出す必要性があり、
その時間内ではその3つの知識を習得するのは私の能力では困難だと判断しました。
また、特にopenGLの知識をつけるという点においてサンプルコードを解説付きで読むことができるという
環境は私の考えつく限り最良の方法ですので、やはり私の読める日本語で
サンプルコードが書いてあるところを探すのが最良であると考えました。

重ね重ねにはなりますが、日本語で解説しているサイトなどご存知でしたら教えていただけると幸いです。

713 :デフォルトの名無しさん:2013/06/23(日) 21:33:25.20
日本語あってもお前にゃ無理

714 :デフォルトの名無しさん:2013/06/23(日) 23:21:44.25
「パーティクル OpenGL サンプル」
とかでググれば日本語でもいろいろ出てくるだろ

715 :デフォルトの名無しさん:2013/06/24(月) 22:20:34.48
ひまわりの本に載ってるって書いてあるだろうが
金払いたくないなら諦めろ

716 :デフォルトの名無しさん:2013/06/24(月) 22:22:35.50
時間ないなら尚更参考書買ったほうがいいわ

717 :デフォルトの名無しさん:2013/06/24(月) 22:34:44.98
「OpenGLの知識も浅い」というのがどれくらい浅いのか、もう少し具体的にできんかな。

程度によっては、今からGLSLをじっくり学んでひまわりの本のパーティクルを理解することも、
それほどだいそれた事ではないかも知れん。

718 :デフォルトの名無しさん:2013/06/27(木) 12:50:29.54
IE11、正式にWebGL対応するらしいね。

719 :デフォルトの名無しさん:2013/06/27(木) 16:47:07.42
まあIEらしい罠が盛りだくさんなのは確定的に明らか

720 :デフォルトの名無しさん:2013/06/27(木) 18:09:20.36
WebGL標準潰しの罠ですね判ります

721 :デフォルトの名無しさん: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出ないかな。

722 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
あるソフトが、OpenGL2.1がないというエラーを出して起動できません。
OpenGLというのはグラフィックのチップが対応する命令ということまでは
わかったのですが、自分のPCが対応しているかどうかがどうしても
わかりません。
PCは、hpの2230sで、4GB、XPです。
ドライバなどを入れると使えるようになるのでしょうか。

723 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
>>722
ソフト板かPC初心者板か、素直に猿知恵袋とかで聞けばよろし。

724 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
わかりました、ありがとうございます。

725 :デフォルトの名無しさん:2013/07/17(水) NY:AN:NY.AN
これ入れればバージョンわかるで
http://www.ozone3d.net/gpu_caps_viewer/

726 :デフォルトの名無しさん:2013/07/21(日) NY:AN:NY.AN
なんでopenGLって深度バッファ必須なんだろうな
2D的に使いたい場合は上書きだけで良いんだが

727 :デフォルトの名無しさん:2013/07/21(日) NY:AN:NY.AN
馬鹿には無理

728 :デフォルトの名無しさん:2013/07/21(日) NY:AN:NY.AN
デプステストをEnableにしなきゃいいだけじゃないん?

729 :デフォルトの名無しさん:2013/07/21(日) NY:AN:NY.AN
うん、そうだったみたい
エラーが出てるところを読み違えてた
0サイズのテクスチャーが扱えないんだな

730 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
OpenGL 4.4きたぞ

731 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
thx!

732 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
1.x以来の4番台?

733 :デフォルトの名無しさん:2013/07/23(火) NY:AN:NY.AN
glTexImage2Dで最後の引数void*に0を入れた場合の初期化って0に指定できます?
0に初期化して必要な部分だけglTexSubImage2Dで指定したいのですが

734 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
void*に0したら何をしなくても0初期化される?

735 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
たしか中身不定になるはず
初期化してない変数と同じでゴミデータが詰まっている状態
0に初期化したい部分はglTexSubImage2Dでわざわざ埋めてやらないとだめ

736 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
あれ、そうなのか
何も考えずにglTexImage2D(0)でサイズだけ確保→glTexSubImage2Dで一部だけテクスチャー貼り付け
したらその部分以外は0っぽくなって(すくなくともアルファ値0)大丈夫かな?と思ったんだが

737 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
お前がそう思うならそれで良いよ
べつにだれも困らないから

738 :デフォルトの名無しさん:2013/07/24(水) NY:AN:NY.AN
リファレンス読めよ

739 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
IE11 Developer Preview出たね。
自作のWebGLアプリを試してみたら、ちゃんと動いた。少し感動だ。

740 :デフォルトの名無しさん:2013/07/27(土) NY:AN:NY.AN
OpenGLを動かしているといつの間にかモニタの色深度が16bitになっていることがあって
その状態で気が付かないままOpenGLを使用したアプリを動かすと画面が壊れたり
最悪システムがクラッシュするという事態に遭遇
ここのトップで紹介されてるglxgearsも動かすと色深度が勝手に落ちるみたいな
報告が一部であったようだけどこの問題何なんだ

741 :デフォルトの名無しさん:2013/08/06(火) NY:AN:NY.AN
現在Windows環境でglewを使いプログラムを書いています。
FPSを取得したいので、WM_PAINTメッセージが呼ばれたさいの描写にかかる処理時間からFPSを出していますが
上手くFPSの値を得ることができません。
glewを使ったさいの正しいFPSの取得方法を教えて下さい。

742 :デフォルトの名無しさん:2013/08/06(火) NY:AN:NY.AN
そもそもglew以外の環境でFPS値を取得することはできてますか?
FPS値取得は特定のフレームワークに依存するアルゴリズムではないのでスレ違いかと。

743 :デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN
>>742
例えばopenglを使っていなかった場合、描写に必要なデータが作られるのにかかる時間でFPSを出していますが
シェーダに描写データを作成させる場合にどこの部分を計測させると良いかがわからないです。

744 :デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN
FPSなんだから一秒間に何フレームか計れよ。

745 :デフォルトの名無しさん:2013/08/07(水) NY:AN:NY.AN
描画時間を測ってもFPSとしては正しくないだろう。
前回のSwapBuffersとの差を求めれば?

746 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
Ivy Bridgeでセレクションモードを使ったマウスピッキング処理が遅い
古いオンボードGPU(GMA 4500)だと問題なく動いていた
セレクションモードって最近のGPUだと使わないほうがいい?

747 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
>>746
GPUによって処理が遅くなるかどうかは知らんが、
トイプログラムやちょっとした実験とかならいざ知らず、
今も昔も実用的なアプリでは使わない機能だと思う。

たいていは当たり判定処理や可視判定処理のために、
ポリゴン群(や3Dオブジェクト群)をツリー構造やグリッド構造などに入れている。
そこまで環境が整備されていれば、マウスピッキングもたやすい。
わざわざセレクションモードを使うまでもない。
(こちらは、重なったポリゴンの奥の物を指すこともできるし)

748 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
あんな2回レンダリングしなきゃいけないやつ使ってるのがいたとは

749 :デフォルトの名無しさん:2013/08/11(日) NY:AN:NY.AN
>>748
個人で作ってる物理シミュレーションの可視化アプリなんで、
パフォーマンスはあまり気にしてなかったんだ。
ぐぐってみると、カラーバックバッファを使った方法があったので
今こっちの方法で書き直してる。

750 :デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
OpenGL ESについて質問させてください

OpenGL ESのバージョンには、
1.0 1.1 2.0 3.0
がありますが、
1.0と2.0では描画スピードに差があったりするものでしょうか?

751 :デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
当然自分で計測してみた上での質問ですよね?

752 :デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
>>750
3.0 > 2.0 > 1.1 > 1.0
の順で早いよ、そういう質問は初心者すぎ

753 :750:2013/08/12(月) NY:AN:NY.AN
>>751
すいません、まだOpenGL ESの勉強を始める前で、
バージョンが数種類あるみたいだからどれがいいかなと思いまして。

>>752
ありがとうございます。

754 :デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
>>753
ESってことはAndroidかiOSかな?
どっちも今の主流は2.0だから、2.0がお勧めだけど、最初はとっつきにくいよ。
あと、そもそも生のOpenGLを叩く必要があるの?って気も…。

755 :デフォルトの名無しさん:2013/08/12(月) NY:AN:NY.AN
OpenGLってGPUが1.0対応だった場合2.0の機能は
DirectXのHELみたいにソフトウェアで代用されるの?
それとも使用した時点で落ちる?

756 :デフォルトの名無しさん:2013/08/14(水) NY:AN:NY.AN
落ちるんじゃね?

757 :デフォルトの名無しさん:2013/08/15(木) NY:AN:NY.AN
glutでちょっとしたデモをプログラミングしていましたが、
PC変えてから、正しく描画されなくなりました(真っ白というかデフォルト色のまま?になる)
glutInitDisplayMode(GLUT_RGBA) → glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA)
glFlush → glutSwapBuffers
とすると、正常に描画されるみたいなんですが、原因を知りたいです

758 :デフォルトの名無しさん:2013/08/15(木) NY:AN:NY.AN
>>755
落ちるというか、関数ポインタを取得するときに0が返るはず。

>>757
glutとかOpenGLのドキュメントをもっとしっかり読めば原因を突き止められると思うよ。

759 :デフォルトの名無しさん:2013/08/15(木) NY:AN:NY.AN
OpenGLはドライバによってステートの扱いが適当だったりするよね

760 :デフォルトの名無しさん:2013/08/15(木) NY:AN:NY.AN
SuperBible 6th Edition買っちゃうお!

761 :デフォルトの名無しさん:2013/08/16(金) NY:AN:NY.AN
>>759
具体的にどのドライバの何のステートが適当なの?

762 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
2分木や多分木を3Dで表示したいのですがOpenGLで可能ですか?
こんな感じのです。
        root
/ | \
     a b c
/ | \/ | \/ | \

763 :デフォルトの名無しさん:2013/08/18(日) NY:AN:NY.AN
可能です

764 :デフォルトの名無しさん:2013/08/19(月) NY:AN:NY.AN
>>762
OpenGLでは線も描画できるので、何を描くかは
完全にアナタ次第よ。

765 :デフォルトの名無しさん:2013/08/19(月) NY:AN:NY.AN
だいぶ絵も出せるようになったので、ゲームらしく音を鳴らそうと思います。

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

どこにあるのか教えて頂けると助かります!
お願いします。

766 :デフォルトの名無しさん:2013/08/19(月) NY:AN:NY.AN
OpenGLでは音を鳴らすライブラリはありません
まずはゲームスレに行ってみればいかがか?

767 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
そうなんですか
OpenSLとOpenGLは無関係なんですか?
音鳴らすのは3D出すよりハマリそうな予感ですね・・・

768 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
音なんてハードディスクのアクセスを細かく制御すればなんとかなるよ

769 :デフォルトの名無しさん:2013/08/20(火) NY:AN:NY.AN
ウチのマシンSSDだから音でない

770 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
openglのglutって古くさいとテンプレに書いてるけど
今からはじめるならもっと良いのがあるのかな
情報量やCやpythonでopenglを扱うなら一番の選択だと思ったんだけどどうなんですか

771 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
勉強レベルなら何も困らないしUIしたくなったらオプションでgluiも
glutじゃ複雑な製品レベルのものは作れないよってだけだし

772 :デフォルトの名無しさん:2013/08/27(火) NY:AN:NY.AN
OpenGL のサンプルコードを手っ取り早く動かすときには glut で十分だね。

773 :770:2013/08/27(火) NY:AN:NY.AN
glutとgluiで十分そうだから取り敢えずこれをやってみます

774 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
コンソールアプリでopengl出来ませんか?
freeglutなしで、openglだけで
全画面表示だけでも良いので。

775 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
コンソールアプリがなんのことか判らんが、glutなしでもopenGLはできるよ。

776 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
できますよ

777 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
やりかたおしえてください。

778 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
そもそも実行環境もOSも何もかも不明で、いったい何を答えろと言うんだろう?
頭が悪いにもほどがある。

779 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
空気読めない奴はスルーで・・・

780 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
馬鹿には無理

781 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
と、あの時は思っていた

782 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
windows 7 です。
教えてください。
実行環境はmingwです。

783 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>774
OpenGLを使うにはwindowsでもlinuxでも必ずウィンドウを作らないといけない。
なのでX11が動いてないような状態でOpenGLは使えない。
でもウィンドウを非表示にしてコンソールアプリっぽくする事は可能

784 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
これを読めばわかるでしょう
ttp://www.opengl.org/wiki/Getting_Started

785 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>783
画面はリアルタイムにみえなくていいから
動画をファイルにして出力ってこともウインドーを作らないと無理ですか?

786 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>785
画面に何も表示しない場合でもウィンドウハンドルかデバイスコンテクストがないと
OpenGLのコンテクストは生成できなかったはず。
というか、windows7でmingw使うならウィンドウ作るけど非表示にしておく方法で問題ないと思うけど。
コンソールアプリを作るときに
CreateWindowしてOpenGLコンテクスト作って、ウィンドウは非表示のままでOK。

787 :デフォルトの名無しさん:2013/08/30(金) NY:AN:NY.AN
>>786
> 画面に何も表示しない場合でもウィンドウハンドルかデバイスコンテクストがないと
> OpenGLのコンテクストは生成できなかったはず。

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

こんなことやったこと無いから知らんけど。

788 :デフォルトの名無しさん: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;
}

789 :デフォルトの名無しさん:2013/09/04(水) 04:28:02.75
ヒント
デバイスロスト

790 :デフォルトの名無しさん:2013/09/04(水) 13:10:58.64
俺はこういうえらそうに糞みたいなアドバイスをしていい気になってるカスが一番嫌いだ

791 :デフォルトの名無しさん:2013/09/04(水) 14:52:23.29
わかる
でも誤爆じゃないのさすがに

792 :デフォルトの名無しさん:2013/09/04(水) 15:14:59.84
馬鹿には無理

793 :デフォルトの名無しさん:2013/09/04(水) 17:45:02.94
>>790
あなたの好き嫌いなどこのスレではどうでもいいことでは?
詳細にごちゃごちゃ言うよりはシンプルで嫌いじゃない、という人もいるんだし。

あなたが質問者本人でしたら、すいません。

794 :788:2013/09/04(水) 18:25:35.98
喧嘩はやめて・・・

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

現象が再現するサンプル作ったけど上げ方わからないしなー
あとコンパイル環境も悪いのではと疑っています、これはDebianスレで聞いた方がいいのかな?

795 :デフォルトの名無しさん:2013/09/04(水) 18:44:15.08
>>788
displayList使うのをやめてみても同じ現象がおきるかどうかを調べてみて、
原因がdisplayListなら使うのを止めるのを薦める
そうで無いなら今の情報では分からないから原因を絞り込む

796 :788:2013/09/04(水) 18:58:21.25
>>795
リストを使うのをやめても現象が出ました orz...
どうも最初考えていたリストが原因ではないようです
絞り込みについては環境の方とあわせて悩み中です

797 :デフォルトの名無しさん:2013/09/04(水) 19:17:43.26
>>796
じゃなんとなくだけど、glBegin() glEnd()使ってるでしょ? glEnd()をどっかで忘れてんじゃね (根拠ないけどね)

798 :デフォルトの名無しさん:2013/09/04(水) 19:24:29.92
>>796
あ、glGetError()のチェックのが先かも

799 :788:2013/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) );
}
}

800 :デフォルトの名無しさん:2013/09/04(水) 19:56:16.62
コンテキストちゃんと管理してる?

801 :788:2013/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;

802 :デフォルトの名無しさん: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使わなくていいとかなら気にしなくていいけど。

803 :788:2013/09/04(水) 21:00:15.90
>>802
いえいえレス有難う御座いました。

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

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

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

>4
古いグラボなんです・・・消費税が上がる前にPCごと買い換える予定ですが今は
玄人志向GeForce6200A-LA128C を使っています。
Vertex Buffer object も少し見てみます。(と言っても本番は球体と直線を書かないといけないんです)
ググってちらっとみましたが難しそうですね

804 :デフォルトの名無しさん:2013/09/05(木) 18:14:29.76
誰にレスしとるのかわからんが、グラボ古過ぎ

805 :デフォルトの名無しさん:2013/09/05(木) 20:17:10.61
Geforce6でもOpenGL2.1は対応してるみたいだし問題ないんじゃない

806 :デフォルトの名無しさん:2013/09/07(土) 23:20:26.12
OpenGL ESをDirect3DでラップするANGLEというのがあるけど
これを使えばDirect3D版とOpenGL(ES)版の両方のプログラムを描かなくても良いかーなんて思ったが
ANGLEでもシェーダー等全てを変換出来るか分からないし
ANGLEがWindows Phoneのような他のプラットフォームに移植されるか分からないし
やはり両対応が無難かと思った

807 :デフォルトの名無しさん:2013/09/09(月) 18:52:02.23
シェーダーの詳しい解説ないかな?

808 :デフォルトの名無しさん:2013/09/09(月) 19:08:56.80
>>807
ひまわり本をどうぞ。
http://www.borndigital.co.jp/book/2020.html

809 :デフォルトの名無しさん:2013/09/10(火) 00:56:07.02
>>806
WPで動くかは知らないが、ChromeのWebGLでできることはANGLEでできると思われ
シェーダは内部でHLSLに変換されるし、手動で変換するためのessl_to_hlslってツールもついてる
まあ両対応できる余裕があるならそれに越したことはないが

810 :デフォルトの名無しさん:2013/09/10(火) 13:19:32.37
>>809
WPにもポートされると良いな
WPではシェーダーを実行時にコンパイルする事は出来ないようなので
手動変換は必要っぽい

811 :デフォルトの名無しさん:2013/09/14(土) 00:25:41.21
テクスチャのサイズを変更したい場合どうすればいいんでしょうか?
既存のテクスチャにglTexImage2Dで異なるサイズを指定してやると、
小さいサイズでは問題なさそうなんですが、元より大きなサイズを
指定するとGL_INVALID_OPERATIONになってしまいます。

812 :デフォルトの名無しさん:2013/09/14(土) 01:32:32.58
そのテクスチャ本来のサイズでOpenGLに渡して
描画はミップマップなりフィルタリングなりさせれば良いんじゃないのか?

画像サイズを変えたいということであれば
それはOpenGLではなく画像処理の話になってくるのでスレ違い

813 :デフォルトの名無しさん:2013/09/14(土) 07:57:41.28
描画じゃなくて、そのテクスチャ本来のサイズを変えたいんですが。
たとえば最初1024x768でテクスチャを作って、途中からそれを1920x1080の
別のビットマップに差し替えるというようなことをしたいと思ってます。
そのビットマップをどう用意するかももちろん別の話で。

814 :デフォルトの名無しさん:2013/09/14(土) 08:11:02.87
ビデオカードによって扱えるテクスチャの最大サイズがあるので、それを超えてしまってるんじゃね

815 :デフォルトの名無しさん:2013/09/14(土) 08:19:01.65
GL_MAX_TEXTURE_SIZEって列挙があるね
調べてみれば?

816 :デフォルトの名無しさん:2013/09/14(土) 09:05:32.04
GL_MAX_TEXTURE_SIZEは16384で、最初から大きなサイズで作るぶんには4Kサイズでも
問題ありませんでした。エラーになるのは最初のサイズより大きなものに差し替える場合だけで。

質問したいのはglTexImage2Dで別のサイズのテクスチャに差し替えることがOpenGLの仕様で
認められているのかどうかと、他にテクスチャのサイズを変更する方法がないかどうかですが、
仕様上glTexImage2Dで可能なはずだということであれば、環境の問題と思ってあきらめます。

817 :デフォルトの名無しさん:2013/09/14(土) 09:56:40.44
>>811
2のべき乗になってないんじゃね

818 :デフォルトの名無しさん:2013/09/14(土) 10:19:18.67
単純にAPIの呼び出し手順が間違ってると予想

819 :デフォルトの名無しさん:2013/09/14(土) 10:39:42.90
>>818
コードは同じで大→小はエラーが出ず、小→大の場合だけエラーになるんですが、
サイズ変更するにはどういう手順が正しいんでしょうか?

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

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

// テクスチャ変更時
glBindTexture
glTexImage2D ←ここでサイズを大きくするとGL_INVALID_OPERATION

820 :デフォルトの名無しさん:2013/09/14(土) 11:07:05.57
どうせ引数指定が間違ってる

821 :デフォルトの名無しさん: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
);

822 :デフォルトの名無しさん:2013/09/14(土) 12:05:34.09
>>821
2のべき乗になってないんじゃね

823 :デフォルトの名無しさん:2013/09/14(土) 12:31:51.78
一応、OpenGLは4.1なんでそこは問題ないと思っています。

824 :デフォルトの名無しさん:2013/09/14(土) 13:05:02.26
今回の件とは関係なく
ドライバやドキュメントが嘘ついてることもあるので
実際に検証するってのは大事だと思う

それもその場限りの検証でなく
ユニットテストのような形で残しておけば
環境が変わっても役に立つ

825 :デフォルトの名無しさん:2013/09/14(土) 14:53:40.83
解らないなら「馬鹿には無理」と書いてあると思っていい

826 :デフォルトの名無しさん:2013/09/14(土) 16:39:14.66
とりあえず一旦glDeleteTexures()してglGenTextures()したらうまくかどうかを試して見ては?

827 :デフォルトの名無しさん:2013/09/14(土) 19:31:35.57
作り直した場合はまぁ、うまくいきますね。
ここでテクスチャのサイズ変更の正しい手順を訊いてわからなければ、
そういう方向で修正しようと思っていました。

828 :デフォルトの名無しさん:2013/09/14(土) 19:39:57.32
仕様上glTexImage2Dで不可能なはず

829 :デフォルトの名無しさん:2013/09/14(土) 19:55:35.27
俺普通に縮小拡大やってるけど
まあ環境依存はしそうなので俺が出来たから他でもできるとは限らないが

830 :デフォルトの名無しさん:2013/09/14(土) 20:37:16.18
>>828
そういう操作が可能か保証されていないということがはっきりすればすっきりするんですが。
ちなみにそのことを説明しているドキュメントとかどこかにないですかね?
このへん見ても探せなくて。
http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml

831 :デフォルトの名無しさん:2013/09/14(土) 21:53:45.18
glTexStorage2Dのドキュメント見ると、immutableって書いてある。

そして、equivalentとしてglTexImage2D使った擬似コードも書いてある
これをそのまま信じるなら無理な気がする

832 :デフォルトの名無しさん:2013/09/14(土) 22:02:37.50
えー
じゃあ俺のほうがコード見なおさないとイカンのか(´・ω・`)

833 :デフォルトの名無しさん: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

834 :デフォルトの名無しさん:2013/09/14(土) 22:29:43.40
>>833
> ただ、glTexStorage2Dのドキュメントにだけあえてそのように記述していてglTexImage2Dの
> ドキュメントにはそのように書いてないことと

OpenGL のAPIドキュメントはそういうのが他にもあるよ。
どれかは忘れたけど、他の関数で同じようなドキュメントの不備を経験して、
このスレで質問した覚えがある。

835 :デフォルトの名無しさん:2013/09/14(土) 22:40:31.60
そのへんの解釈の違いでドライバ毎に動作が異なるってのはありそうですねぇ。

836 :デフォルトの名無しさん:2013/09/14(土) 22:59:03.46
ん?もしかして

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

で調べられるんじゃね?
と思った

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

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

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

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

ってレベルだw

839 :デフォルトの名無しさん:2013/09/15(日) 09:07:30.49
>>837
VRAMのメモリって通常のメモリとどう違って確保されるの?

840 :デフォルトの名無しさん:2013/09/15(日) 09:31:15.51
>>838
あとその例えは車と海なら必ずそうなるだろうけど
すでに試したいくつかの環境では実際にサイズ変更できちゃってるからなあ

841 :デフォルトの名無しさん:2013/09/15(日) 09:44:57.04
全く同じプログラムを用いても「できる環境」と「できない環境」がある。

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

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

たとえ仕様に正しいことが書いてあっても実際は仕様と違っている、あるいは
仕様以上の事をやろうとして結局仕様と違う事をしてしまっているグラボやドライバなんて、
いくらでもある。
(グラフィック系に限らず世の中いくらでもある)

842 :デフォルトの名無しさん:2013/09/15(日) 09:51:28.03
そうなんだよな
まあ今のところさほど大規模じゃないので出来ない環境を排除する方向で動いてはいるが・・・
動かない環境をはっきり定義出来ないのがな、グラボバージョン多すぎ

843 :811:2013/09/15(日) 10:45:15.41
>>841
ここで訊きたかったのは、まずはその仕様の正しい解釈の方ですけどね。
そのうえで、その「正しい解釈」に基づいたプログラムが正しく動かない
環境についてどうするか、ってのはもちろんここで聞くことじゃあないです。

844 :デフォルトの名無しさん:2013/09/15(日) 12:28:28.41
>>843
その「正しい解釈がどういうものか」が仕様書やドキュメントには書かれていない。

どうするの?
ユーザー個人個人が自分で正しい解釈を推測するの?

845 :デフォルトの名無しさん:2013/09/15(日) 12:55:02.19
まぁ、最初に質問したときはまさかその解釈が割れるとは思わなかったですからねぇ。

今回の件でどうするかといえば、もともとここで質問して自分のコードの間違いが
わかればそれを修正するし、そうでなければ回避するよう考えていました。
一般的な解は知りません。同じような問題が発生したらその都度判断することに
なるでしょう。

846 :デフォルトの名無しさん:2013/09/15(日) 13:26:08.46
ちなみにエラーになる環境ってどんなの?GPUとかドライバとか

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

はるか昔まだglBindTextureが無い時代だと、テクスチャ更新するたびにglTexImage2Dするしかなくて
そのときは小さいテクスチャから大きいテクスチャにTexImage2Dしてただろうし
仕様的にはできるとおもうだけど

847 :デフォルトの名無しさん:2013/09/15(日) 13:30:44.13
おもうだけどw

てっきりPCだと思ってたんだが違うとなるとむしろハードウェアのドキュメントを漁ったほうがいいんじゃね

848 :デフォルトの名無しさん:2013/09/15(日) 16:56:43.94
小→大に変更する時、メモリ再割り当てに成功するかどうかが重要なんじゃないかな

849 :デフォルトの名無しさん:2013/09/15(日) 17:36:07.91
お前らバカ丸出しだな

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

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

こんなのプログラムでメモリ触った事ある奴なら当たり前なんだけどな…
とうぜんGL使いにも当たり前

850 :デフォルトの名無しさん:2013/09/15(日) 17:40:40.34
内部の動作が規定されているわけでは無いので、
エラーを返す、同じ場所を拡張する、別の場所に再割り当てして内容をコピーする、
あらゆる可能性が考えられる。
持っているリソースハンドルはVRAMの物理アドレスじゃ無いんだから。

プログラマは出来るだけ多くの実機で試して、現実にそこにある実装に従うしか無い。

851 :デフォルトの名無しさん:2013/09/15(日) 17:43:11.10
試しに、最後にglTexImage2したテクスチャに
同じglTexGenしないで再度glTexImage2するってやってみろ
アドレスの後ろに次のテクスチャが無いから動くんじゃね?

GLの仕様とかじゃなくて、プログラムのメモリ確保の常識の問題だっつーの
これが、ゆとり世代の奴らなのかね…

852 :デフォルトの名無しさん:2013/09/15(日) 17:48:52.41
バカ丸出し
○○w
○○ろ
○○だっつーの
ゆとり世代云々

俺が他人にアドバイスするときは、こんな風には言えないな
ネットでもリアルでも

853 :デフォルトの名無しさん:2013/09/15(日) 17:49:26.65
>850が正しいだろ。
なんでGLのVRAMの確保の仕方を勝手に決め付けちゃってるの?
実装によって異なるだろう。

>836
で調べてからDelete,Genするか決めればいいんじゃないの・

854 :デフォルトの名無しさん:2013/09/15(日) 17:50:01.69
たとえば元祖C言語のreallocだと拡張不能なら、別の場所に再割り当て。
メモリ確保はそのときの実装に従うべき話だし、確保の処理手順に常識なんて無いよ。

855 :デフォルトの名無しさん:2013/09/15(日) 17:52:51.76
glTexImage2Dは二度目のコールは、同じテクスチャを拡張する事が出来ない
って仕様に書かれてないから、出来るか出来ないか分からない
ってバカ丸出し

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

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

でも動いているんです、(メモリ不足や使用アドレスを上書きしない限り、たまたま動く)
仕様にも同じポインタ変数にnewしてはいけないって明記してないんです
とか言ってるようなもんw

856 :デフォルトの名無しさん:2013/09/15(日) 17:55:13.16
あーお前ら、質問者の意図を理解してないな

glTexGenは一回だけ
あとは何度もglTexImage2だけ呼んで、テクスチャのサイズを変えたい
っていってるんだぞ?

857 :デフォルトの名無しさん:2013/09/15(日) 17:58:35.90
>>855
reallocの話を出したとたんに都合が悪いから無視、
関係ないnew/deleteでごまかす狼狽っぷりは、
他人を煽るけど自分が突っ込まれるのには弱いみたいだね。

858 :デフォルトの名無しさん:2013/09/15(日) 18:00:20.46
同一のglTexGenによる
glTexImage2DのVRAM割り当ては、同じアドレスになるに決まってだろ

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

つか便利機能つーか、破綻する機能だろ
そう言う発想してる時点でプログラム向いてないぞ

859 :デフォルトの名無しさん:2013/09/15(日) 18:01:31.79
>>857
論点をずらしてるよ

glTexImage2Dは、只のmallocだから

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

たまたまドライバ依存で、動く環境あったら
環境に従うべき?
…大笑いだわw

861 :デフォルトの名無しさん:2013/09/15(日) 18:07:44.22
>>858
>glTexImage2DのVRAM割り当ては、同じアドレスになるに決まってだろ
規定されていないので決まっていない。

たとえばDirect3D9Ex以降なら、ロック画面を出して一度VRAMを飛ばしても、
自動的に再確保されて修復されるようになっている。

862 :デフォルトの名無しさん:2013/09/15(日) 18:08:54.88
>>846
なるほど、glGenTexutresもglBindTextureも無かった頃(1.0?)はglTexImage2Dで
サイズ変更できなかったわけがない、と。それは説得力ありますね。

で、>>846>>848で言われて気づいたんですが、単なるメモリ不足のセンも
考えられますね。開発環境はHD6450MでVRAMが512MBしかないんで。
まずは自分の使い方を疑っていたんで、メモリ使用量まではチェックして
ませんでした。

863 :デフォルトの名無しさん:2013/09/15(日) 18:12:17.92
>>860
論理アドレスを使っているんだから、自動的に再確保されたらOSの支援でも無ければ戻ってくるアドレスは変わるのは当然。
なんで元のアドレスを使う話に持って行ってごまかそうとするの?
そうやってビクビク逃げ回るほど臆病なのにいったい何がしたいの?

864 :デフォルトの名無しさん:2013/09/15(日) 18:13:04.36
バカ丸出しだな
なんだ?2chのレベルでグダグダ論議したいだけで解答は不要なのか?

海外でも日本でもまともなGLのフォーラムで質問してみろ
glTexGenしなおせって話にしかならないからw

865 :デフォルトの名無しさん:2013/09/15(日) 18:13:58.18
>>858
別のアドレスを割り当てられるならそうしたほうがいい気がする、のでそうする気がする

まあ問題は、内部動作を勝手に決めつけてる方なのでこういう推論は無意味だが
だから出来ない、とは言い切れないと思うんだよね
だからできるかどうかは規定されているべきなんだよね

866 :デフォルトの名無しさん:2013/09/15(日) 18:15:19.52
>>862
当然、メモリを単純に拡大して元の情報を保とうとしたら、
一旦は拡大前後合計のメモリが必要になることは理解するよな?

867 :デフォルトの名無しさん:2013/09/15(日) 18:15:32.53
glTexImage2Dは、自動的に再確保じゃねーだろw
GL使って昔から仕事でもしてれば、当然の範疇

868 :デフォルトの名無しさん:2013/09/15(日) 18:16:16.01
>>864
実装上必要ならglTexGenしなおすのは当然なんだが、
いったい何を言いたいのか意味不明。

869 :デフォルトの名無しさん:2013/09/15(日) 18:19:14.73
>>867
最近のドライバ使ってるせいか普通に出来てるんだよね

870 :デフォルトの名無しさん:2013/09/15(日) 18:21:08.78
世の中
ある時代のある分野の常識で考えれば分かる問題と
ある時代のある分野の常識で考えても分からない問題と
ある時代のある分野の常識で考えると間違える問題がある

それだけのこと

871 :デフォルトの名無しさん:2013/09/15(日) 18:23:09.86
実装がどうなっているかなんて、試してみなけりゃ分からない。
固定観念を持っている方が危険。

872 :デフォルトの名無しさん:2013/09/15(日) 18:23:48.35
>>868
>>856 読め

873 :デフォルトの名無しさん:2013/09/15(日) 18:27:55.29
>>866
元の情報を保つ必要はないから一旦破棄して再確保でも問題ないのでは?

874 :デフォルトの名無しさん:2013/09/15(日) 18:28:34.62
そんなわけで当初の質問者に試して欲しいんだが
その環境で、充分小さいサイズのテクスチャから、充分小さいサイズのテクスチャに”拡大”できるかどうかを試して欲しい
それができればメモリの問題ということになるし、出来なければ仕様ということになる

875 :デフォルトの名無しさん:2013/09/15(日) 18:29:46.24
>>873
必要があるかないかはGL側は判断できるのかなあ
あー引数0か・・・

876 :デフォルトの名無しさん:2013/09/15(日) 18:38:38.51
実装がどうなってるか分からないから汎用的に組むべき

実装が明記してない&動くケースがある、だから動かない理由を質問 <- 具の骨頂
glGenTextureを再度呼べば良いだけっしょ

877 :デフォルトの名無しさん:2013/09/15(日) 18:50:56.74
>>874
その環境は今手元にないので、週明けにでも試してみます。

878 :デフォルトの名無しさん:2013/09/15(日) 18:54:20.97
>>876
その「汎用的」の基準として、仕様の上で正しい方法を質問したつもりなんですけどね。
そのうえで問題をどう解決するかってのは自分が考えることです。

879 :デフォルトの名無しさん:2013/09/15(日) 19:08:07.33
glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_IMMUTABLE_FORMAT, &b);
も試して欲しい。

うちの環境では
glTexStorage2D()だとGL_TRUE
glTexImage2D()だとGL_FALSE
だった。

880 :デフォルトの名無しさん:2013/09/15(日) 20:52:46.76
汎用的なコードの例

glGenTexture (...); /* 削除禁止:なぜかこうしないと動かない */

881 :デフォルトの名無しさん:2013/09/15(日) 22:10:36.94
配列は本来固定サイズで最大値をあらかじめアロケートするための方法
要素数1個の配列作る奴の方が変だが
リストボックスに表示するために行列変換するのもなんだかな、って感じだが
ちなみに変なのはワークシート関数の仕様であって、つまりEXCELが変。VBAが変なわけではない

882 :デフォルトの名無しさん:2013/09/16(月) 00:00:29.66


883 :881:2013/09/16(月) 00:29:27.04
誤爆スマソ

884 :デフォルトの名無しさん:2013/09/16(月) 01:09:42.91
>その「汎用的」の基準として、仕様の上で正しい方法を質問したつもりなんですけどね。

思っていることを上手く伝えられないアスペのいい例。

885 :デフォルトの名無しさん: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.

886 :デフォルトの名無しさん:2013/09/16(月) 13:21:14.78
再現するコードがないので実は間違ったパラメータを2度目のglTexImage2Dで使っていただけという可能性も

887 :デフォルトの名無しさん:2013/09/16(月) 13:28:44.20
そうだね

888 :デフォルトの名無しさん:2013/09/16(月) 13:34:08.11
glTexImage2Dでサイズ変更できないのはglTexStorage2Dを使ったテクスチャだけだ

逆に言えばー
それ以外のテクスチャは普通に変えられるってことじゃん

889 :デフォルトの名無しさん:2013/09/16(月) 16:24:36.83
885の英語読んで言ってるのなら、どこにそんな事が書いてあるのか?w

890 :デフォルトの名無しさん:2013/09/16(月) 16:32:22.09
これがゆとり世代か…
まあ、もうどうでもいいかw
実際に出来ない事を、言葉遊びで延々やろうとしれば?w

仕様が明記してない&出来ない環境があるなら、それの手法は使わないのが普通だろ
自分の環境だけ動いて&それで良いってなら別だが

891 :デフォルトの名無しさん:2013/09/16(月) 17:12:51.44
glTexStorage2Dを使用したテクスチャではglTexImage2Dを使ってサイズ変更できない
→glTexStorage2Dを使用していないテクスチャでは glTexImage2Dを使ってサイズ変更できる

わざわざサイズ変えちゃいけないよ的なことがglTexStorage2Dの説明に書いてあるって事は普段は変えても良いよって事でしょう

892 :デフォルトの名無しさん:2013/09/16(月) 17:13:06.74
811以外にエラーになった人いるの?
ためしに古いノートのHD4570でやってみたけどどうやってもエラーにならないんだけど

少なくとも何件か再現されなきゃ、仕様に明記されてない現象認定はできないな

893 :デフォルトの名無しさん:2013/09/16(月) 17:21:33.66
動かないわけないしー
間違ったプログラムを書いただけだろう

894 :デフォルトの名無しさん:2013/09/16(月) 17:50:30.56
お前らちゃんと質問者の意図を理解してる?
>>813
>>819
>>821
読んでみろ、お前らは無意識に自分のちゃんとした手法で試してるだけ
つまり別テクスチャを作り直してるだけ

>>821のglTexImage2Dの最終引数見てみろ、NULLだろ
でwidthとheigthだけかえて、”もともとのテクスチャ”のサイズを変えたい
って言ってんだぞ

895 :デフォルトの名無しさん:2013/09/16(月) 18:24:47.23
>>894
glGenTextureからやらない動かないと言っていたところから、発言がだいぶ後退したよね。

896 :デフォルトの名無しさん: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.

大丈夫そうですね

897 :デフォルトの名無しさん: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は、同じバッファオブジェクトを指す
つまり元のバッファより大きなピクセルサイズは指定出来ない

お前らは、おそらく新しいバッファオブジェクト作ってるだけ

898 :デフォルトの名無しさん:2013/09/16(月) 18:42:08.19
あとは、ドライバ側が優秀でその変を上手く回避する実装なだけ
昔は、nVIDIAで動くコードがATIじゃクラッシュしてglの仕様通りに記述したら
ATIでも動いたなんて頻繁にあったから

899 :デフォルトの名無しさん:2013/09/16(月) 18:44:14.06
釣りが必死

900 :デフォルトの名無しさん:2013/09/16(月) 18:47:37.90
>>897
誰もPixelBufferObjectを使ってるとか言ってないんですが

901 :デフォルトの名無しさん:2013/09/16(月) 18:50:31.47
何処をどう読んだらそういう意味になんだよ
何が仕様だいい加減にしろ

902 :デフォルトの名無しさん:2013/09/16(月) 18:50:40.58
>>897
全然関係ないような気が。
GL_PIXEL_UNPACK_BUFFERにbindしたバッファから転送する場合には
引数dataはバッファ先頭からのオフセットになると書いてあるだけだが?

903 :デフォルトの名無しさん:2013/09/16(月) 18:51:03.31
>>900
君ねぇ…w
glBindBuffeをコールすると、
GLは君には知られないようにピクセルバッファオブジェクを作るんだよ

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

もっとGLを勉強しなさい

904 :デフォルトの名無しさん:2013/09/16(月) 18:52:12.22
>>902
うんそうだよ
全てはこの荒らしの世迷言

905 :デフォルトの名無しさん:2013/09/16(月) 18:53:20.42
>>903
日本語でおk

906 :デフォルトの名無しさん:2013/09/16(月) 18:54:51.70
は?
>>819を良く読め
PBOを使ってるんだから、GL_PIXEL_UNPACK_BUFFER指定してるに決まってるだろ

907 :デフォルトの名無しさん:2013/09/16(月) 18:57:23.13
>>903
失礼wかみまみた
ピクセルバッファオブジェクトじゃないな、バッファオブジェクトだ

908 :デフォルトの名無しさん:2013/09/16(月) 19:01:27.05
>>903
嘘つけ!
実際に作るのはglTexImage2DとかglBufferDataを使った時だろ
glGen*は空き番号を返すだけ

909 :デフォルトの名無しさん:2013/09/16(月) 19:02:24.51
別にpbo使う時でもglBufferDataでバッファのサイズを大きくすれば良いだけじゃん

910 :デフォルトの名無しさん: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

911 :デフォルトの名無しさん:2013/09/16(月) 19:09:16.26
>>909
それ話が変わっちゃうからw

912 :デフォルトの名無しさん:2013/09/16(月) 19:20:39.96
で何度も質問者の意図を理解してるか聞いて
質問者のレスへのリンクまで張ったのに、PBO使ってるってコメント読んで無いとか?

そんなんで、試したとか出来ないわけないととか言っちゃてたわけ?w

913 :デフォルトの名無しさん:2013/09/16(月) 19:23:50.90
で、仕様のどこにテクスチャのサイズ変更はできないって書いてあんの?wwwwwww

914 :811:2013/09/16(月) 19:24:08.86
>>906
失礼、事実関係だけ。
参考にしたコードにPBOと書いてあったので>>819はそれを引きずってますが、
実際に使っているのはGL_ARRAY_BUFFERになります。

915 :デフォルトの名無しさん:2013/09/16(月) 19:24:43.43
>>897とか完全に意味不明だし氏ねばいいのに

916 :デフォルトの名無しさん:2013/09/16(月) 19:29:04.95
glBindBufferの仕様にGL_PIXEL_UNPACK_BUFFERターゲットの場合
glTexImage2Dは影響を受けると書いてる
影響とは、ポインターは既にあるバッファオブジェクトのバイトオフセットになると

で質問者はPBOを使ってるいる
ならGL_PIXEL_UNPACK_BUFFER指定している
つまり、バッファオブジェクトは新しく作られないから
既にあるバッファサイズを越えたサイズのglTexImage2Dはバッファオーバーするのが当然
(ドライバによっては、指定より大きいサイズのバッファオブジェクトを作って動くかもしれんが、それは環境依存)

917 :デフォルトの名無しさん:2013/09/16(月) 19:31:06.45
>>915
もっとGL使いとしてのステージwを上げるべきじゃね?w

>>914
後だし情報って奴ですか…w

918 :デフォルトの名無しさん:2013/09/16(月) 19:32:53.85
質問者はPBO使ってないらしいし
使うにしてもバッファを大きくしておけばバッファオーバーランにはならない

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

ありえなーい

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

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

じゃー、この変の参考の引用間違いが原因じゃねー?

920 :デフォルトの名無しさん:2013/09/16(月) 19:47:03.29
今日はうんこが柔らかい

921 :811:2013/09/16(月) 19:50:35.64
>>917
まぁ、バッファが関係するのはglTexSubImage2Dの部分だけと考えていましたので
そのへん詳しくは書いていませんでした。

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

>>919
一応、そのサンプルコードが使っていたのは最初からGL_ARRAY_BUFFERでした。
関数名がcreatePBOだったというだけで。

922 :デフォルトの名無しさん:2013/09/16(月) 19:56:03.94
>結局のところ
そうっぽい

とりあえず普通にサイズ変更は出来そうで安心した

923 :デフォルトの名無しさん: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指定になってない
って調べた?
人のコードを理解してないように引用するレベルなんて疑ってしまう

924 :デフォルトの名無しさん:2013/09/16(月) 20:02:48.60
やっぱ変な抽象的なコードで「エラーが起きるんです」なんて言わせないで
エラーが起きるコードをコピペする(させる)べきだな

質問者はそのところ反省してくれ

925 :デフォルトの名無しさん:2013/09/16(月) 20:03:45.03
>>921
君の理解してる言葉はイマイチ信用できない
GL_ARRAY_BUFFER指定とかじゃなくて、PBOは使ってるの?使ってないの?
って事だと思うけど

926 :デフォルトの名無しさん:2013/09/16(月) 20:05:36.31
>>921
話し続いてるし、できたらglTexImage2Dのサイズ変更だけをしてエラーを出すコードとか上げれない?
全然違うところが原因かもしれないしさ

927 :デフォルトの名無しさん:2013/09/16(月) 20:14:53.89
>>921
もっとglBindBufferの動作についても調べると良いよ
だってglBindBufferしてる各内部オブジェクトが、glTexImage2Dで操作されるんだよ
自分ではGL_ARRAY_BUFFER指定のつもりでも、
PBO使ってるなら、内部でGL_PIXEL_UNPACK_BUFFERのオブジェクトになるかも知れないし
(これは完全に推測)

928 :デフォルトの名無しさん:2013/09/16(月) 20:24:16.54
>>921
>結局のところ、GL_PIXEL_UNPACK_BUFFERをソースに指定してglTexImage2Dを
>呼んだ場合、あらかじめバッファ側を拡大しておかなければエラーになる、という
>ことですかね?
内部のバッファオブジェクトの事を言ってるなら
内部オブジェクトは操作出来ないよ
ドライバ実装まかせ

929 :デフォルトの名無しさん:2013/09/16(月) 20:37:01.94
>>928
あ?

930 :デフォルトの名無しさん:2013/09/16(月) 20:38:15.98
本当に解決したいならコード貼れ

931 :デフォルトの名無しさん:2013/09/16(月) 20:48:36.69
>>929
GLが内部オブジェクトを使って動いているって理解出来ない人は
いちいち反応しないでくれるかな?w

932 :デフォルトの名無しさん:2013/09/16(月) 20:50:08.43
>>931
い?

933 :デフォルトの名無しさん:2013/09/16(月) 20:52:36.65
何をこいつ威張ってんの?

934 :811:2013/09/16(月) 20:57:39.96
>>925
>>927
たしかに、そのへんバッファの種類や扱いについて理解があやふやなまま
だったので、コードの方にどう書いたかは確認してみます。
?GL_PIXEL_UNPACK_BUFFERにバッファをbindしたままglTexImage2Dを
呼んでないかという点についてもちゃんと認識していないので、それが
原因の可能性も考えられますね。

935 :デフォルトの名無しさん:2013/09/16(月) 20:58:56.68
なぜ頑なに再現するコードを出さないのか

936 :デフォルトの名無しさん:2013/09/16(月) 21:07:17.09
つかPBO使ってるどうか何て直ぐ分かるだろ
PBOを理解してなくとも、ググッてコード検索すれば直ぐに分かるだろ

937 :デフォルトの名無しさん:2013/09/16(月) 21:11:50.98
正しい仕様は、
glTexImage2DでGL_INVALID_OPERATIONが起こるケースの内容を1つづつ検証してけば良いだけ
エラーの指摘どおりのケースがあったら、それを直して再度チャレンジ
またエラーが出るようなら、同じようにAPIのエラー出てる箇所を調べて修正

エラーの箇所と原因を特定して質問出来ないレベルなら地道にやるしかないよ

938 :デフォルトの名無しさん:2013/09/16(月) 21:12:59.71
コードを理解しないでコピペで作ろうとする奴いるよな
それでいて少しだけかじった知識で全部理解してるかのように反論してくるっていう

939 :デフォルトの名無しさん:2013/09/16(月) 21:18:21.44
フォーマットの指定が誤っているとかしょうも無い系エラーがまず疑われる

940 :デフォルトの名無しさん: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

941 :デフォルトの名無しさん:2013/09/16(月) 21:22:39.52
後だし情報、自身のコードあやふや回答で盛り上がってまいりました

942 :デフォルトの名無しさん:2013/09/16(月) 21:28:33.48
質問者の糞コピペコードで動かなかったから何だっていうんだYO

943 :811:2013/09/16(月) 21:28:47.76
>>935
今は環境もコードも手元にないので。
最初は単に使い方を聞くだけのつもりでしたが、いろいろヒントをもらいましたので
明日確認してみます。

>>937
まぁそこは、それ以前の「glTextImage2Dでサイズを変更するのは正しいやり方なのか?」
というところからですから。おかげでいろいろ勉強になりましたが。

944 :デフォルトの名無しさん:2013/09/16(月) 21:42:54.48
スレ延びてる割には情報量0だな

945 :デフォルトの名無しさん:2013/09/16(月) 21:43:51.18
glDeleteTextures(glGenTextureは任意か…)して、
再度glTexImage2D呼んで、新たに作成する以外に方法はない
glTexImage2Dを再度呼べばサイズ変更出来るなんてド素人発想

前のリソースリークしまくって、出来るとか言うなら
どうぞご勝手にw

946 :デフォルトの名無しさん:2013/09/16(月) 21:45:10.88
glBindBufferでメインメモリではなくPBOを転送元にして
glTexImageすると
転送先テクスチャは再作成されずサイズも変更されない
というトンデモ理論についてはどう思う?
あるいはコピーされずテクスチャのアドレスがPBOのアドレスになるみたいに奴は考えているのかもしれない

947 :デフォルトの名無しさん:2013/09/16(月) 21:47:34.85
>>945
フレームやってもメモリリークとかしねーよ
それが普通の挙動

948 :デフォルトの名無しさん:2013/09/16(月) 21:49:35.84
>glTexImage2Dを再度呼べばサイズ変更出来るなんてド素人発想
なんか表現が違ったw
こうだな

glTexImage2Dを続けて呼べばサイズ変更出来るなんてド素人発想

949 :デフォルトの名無しさん:2013/09/16(月) 21:52:19.57
>>946
GL内部のバッファオブジェクトとPBOをゴッチャにしか語れないレベルなら黙ってれば?w

950 :デフォルトの名無しさん:2013/09/16(月) 21:53:59.83
誰かこの荒らしを黙らせろ!

951 :デフォルトの名無しさん:2013/09/16(月) 21:54:22.01
>>947
普通はVRAM側のリークは、メモリを壊しながら動く
それ続けて自身のアプリを放置して見てろよ?
各所でテクスチャが壊れまくるはずだからw

952 :デフォルトの名無しさん:2013/09/16(月) 21:57:08.17
机上の空論・・・いやタブレット上の空論だ!!

953 :デフォルトの名無しさん:2013/09/16(月) 21:57:17.51
BPOとACとJAROをゴッチャにしか語れないレベルなら黙ってれば?w

954 :デフォルトの名無しさん:2013/09/16(月) 22:02:48.25
エラーになるってのは無理があるから
メモリリークするって話に変えようとしていますね
しないのに
>>951はもはや見苦しい言い訳の域を超えました

955 :デフォルトの名無しさん:2013/09/16(月) 22:06:24.27
俺は一言もエラーになるなんて言ってないぞ?
続けてglTexImage2Dコールしてもサイズ変更出来る訳無いって言ってるだけ
どこのレスか教授して欲しいねw
寝ぼけて書いてるかもしれんしw

なんか思い込み星人さんと議論してたのか…w

956 :デフォルトの名無しさん:2013/09/16(月) 22:07:47.42
さあさあ
811以降のレスで、俺と思しき書込みのどこにエラーになるって書いてる?

957 :デフォルトの名無しさん:2013/09/16(月) 22:12:10.10
あ!?やんのかゴルァ!!

958 :デフォルトの名無しさん:2013/09/16(月) 22:14:36.19
糞スレ

959 :デフォルトの名無しさん:2013/09/16(月) 22:18:39.35
あースマンスマン
技術論議とかけ離れたね

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

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

glTexImage2Dを続けて呼ぶと、古いテクスチャは破棄される
そう言う挙動はドライバ依存で、GLの仕様にのってないから
出来る、リークしないなんて間違いだね

960 :デフォルトの名無しさん:2013/09/16(月) 22:23:59.87
ドライバ依存ならリークする・しないと言い切るのが間違いなのでは

961 :デフォルトの名無しさん:2013/09/16(月) 22:24:41.24
ゆとりをバカにしながら昔の思い出の中で生きてろよ

962 :デフォルトの名無しさん:2013/09/16(月) 22:27:09.72
リークする環境があった時点で
リークを想定した汎用的な処理をしなければならず
間違った処理と言えるじゃん

自分の環境で動く&それで良い人は
好きにすれば、とも言ってるし

963 :デフォルトの名無しさん: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!!!!!

964 :デフォルトの名無しさん:2013/09/16(月) 22:28:36.75
http://www.opengl.org/wiki/Common_Mistakes#Updating_a_texture

965 :デフォルトの名無しさん:2013/09/16(月) 22:30:15.02
別に出来ない事をバカにしてるんじゃないのよ
こっちが情報提供してるのに、
意味不明とか反論とか勝手な人の発言変換とかして自分を曲げないじゃん

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

かわいそうだなーってw

966 :デフォルトの名無しさん:2013/09/16(月) 22:31:19.84
やっぱ普通にできるよなあ
どう考えても前のデータを残す実装に意味があるとは思えんし

967 :デフォルトの名無しさん:2013/09/16(月) 22:32:17.38
>>959
その昔のヤツもなんか特殊なアロケートしてたんじゃないのかね?

968 :デフォルトの名無しさん:2013/09/16(月) 22:34:58.80
エラーが出て(コマンドが失敗する)
サイズ変更に失敗する
どちらも似たような言い方なのにソコを突くか普通
重箱の隅をつつくような話だな

969 :デフォルトの名無しさん:2013/09/16(月) 22:41:47.27
リークする実装って何処にあんだよ
OpenGL.orgのwikiの中の人も前のピクセルデータは削除して当然だと思っているのに

970 :デフォルトの名無しさん:2013/09/16(月) 22:44:34.76
これだから老害は

971 :デフォルトの名無しさん:2013/09/16(月) 22:46:54.02
そうwikiを編集した人がそう思ってるだけで
クロノスグループの仕様には明記してない
だからドライバがそう言う実装になってなくとも文句は言えない
つか実際にあったケースだし

972 :デフォルトの名無しさん:2013/09/16(月) 22:48:20.97
>>971
もう実際にあったケースなんて書き込みは意味が無いだろ
そのグラボの型とドライバのバージョンと再現するコードまで示してくれ

973 :デフォルトの名無しさん:2013/09/16(月) 22:55:49.49
前の職場だし、教務用の環境だから書く訳にはいかない

コード的には、ミップマップのテストしてて
ミップレベル毎のテクスチャ作成をケチって
カメラとキャラの距離で、動的にglTexImage2Dを何度も読んでたら起こった
glDeleteTexture(とglGenTexture)を挟むと、テクスチャは壊れなくなった
って内容だね

974 :デフォルトの名無しさん:2013/09/16(月) 22:56:50.68
テクスチャ画像を拡大したい時ってどんな時なんですか?
普通はレベル分のMipmap画像を用意したり、GL_GENERATE_MIPMAP? 指定して生成したりするんじゃないんですか?

975 :デフォルトの名無しさん:2013/09/16(月) 23:02:29.02
俺の時は、VRAM使用をケチる目的で
ミップレベル指定分のピクセル作成をやめて
キャラがカメラの近くの時にミップマップ無しの大きなテクスチャ、
遠のく時にミップマップ無しの小さなテクスチャを作ろうとした
(生成速度の遅さはカバー出来るアプリ仕様だったため)

まードライバ会社と英語のやりとりして、
その方法は駄目だ、ミップマップを作れって返事が来て
ドライバ修正とかにはならなかったがw

976 :デフォルトの名無しさん:2013/09/16(月) 23:07:05.80
「英語の」とわざわざ言うところがなんとも

977 :デフォルトの名無しさん:2013/09/16(月) 23:16:49.43
ImmutableのテクスチャがあるならMutableのテクスチャがあるのは当然

978 :デフォルトの名無しさん:2013/09/16(月) 23:26:16.74
前のテクスチャをクリアしないのはパフォーマンス的には何のメリットもない
いつそんなものが存在したのか知らないが本当に糞実装だな

979 :デフォルトの名無しさん:2013/09/17(火) 13:19:16.71
OpenGLスレ Part20
http://toro.2ch.net/test/read.cgi/tech/1379391344/

980 :デフォルトの名無しさん:2013/09/17(火) 13:40:10.42
>>979
スレ立て乙

981 :デフォルトの名無しさん:2013/09/17(火) 14:11:51.87
糞スレ埋め

982 :デフォルトの名無しさん:2013/09/17(火) 14:15:55.42
なんで GLSL は vec4 で、OpenCL は float4 なんだ。
なんで GLSL には mat4 があって、OpenCL には float4x4 が無いんだ。

983 :デフォルトの名無しさん:2013/09/17(火) 15:53:37.95
hint
需要と供給

984 :デフォルトの名無しさん:2013/09/17(火) 18:16:59.20
glslじゃなくてhlsl寄りなんだろう

985 :デフォルトの名無しさん:2013/09/17(火) 18:24:28.35
あとfloat16を思い出してあげてください

986 :811:2013/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.

アドバイスありがとうございました。

987 :デフォルトの名無しさん:2013/09/18(水) 00:27:06.25
おん、すっきりした

まとめ
glTexImage2Dでサイズ変更はできる(もちろん最大サイズとかメモリとか許す範囲で)
ただしglなんちゃらStrageとかピクセルバッファオブジェクトとか使って特殊なアロケーションしてる場合はダメ

988 :デフォルトの名無しさん:2013/09/18(水) 07:08:28.01
おお
てっきり
嵐だと思っていたが
解決したのか

989 :デフォルトの名無しさん:2013/09/18(水) 07:45:27.17
異常にスレ延びてると思って来てみたら基地外粘着だったでござる。

990 :デフォルトの名無しさん: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する前にバインディングを確認するコードを置いておくといいのではないでしょうか。

991 :デフォルトの名無しさん: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

992 :デフォルトの名無しさん:2013/09/18(水) 08:27:30.54
キチガイ自演マッチポンプすれ

224 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)