設計について思うところ。
とある所が作っているライブラリ的なものを使っているので,設計について個人的に思うところがあったので,メモとして残しておこうかと思います。
・マクロは出来るだけ使うな!
→ IntelliSenceが効かないし,コードがすげぇ汚くなるし,ロジックがわからなくなるので,外部向けに出すものとしては非常に良くない。
・依存度はできるだけ減らせ!
→ 墓ライブラリ的なものを使っているとたった1機能を使うために数十のファイルを必要とする。はっきりいって,そんな依存度の高いものは使いたくない。出来るだけ依存度が低いように設計すべし。
・汎用的に作るとパフォーマンスが遅くなりがち
→ パフォーマンスを求めるのか汎用性を持たせるのか,設計時にどちらをとるか考えるべし。出来れば共通できるところと共通できないところを明確に分けておいたほうが,後々良さげ。無理に共通化すると後で困る。
・パフォーマンスを求めるならループ内での関数呼出しは可能な限り避けるべし
→ ループ内での関数呼出しは出来るだけ避けたほうがパフォーマンス的に有利。関数よりもinline関数,inline関数よりもマクロの方が早いみたい。些細だがこれで一桁分稼げることも・・・。
・キャッシュ効率を考えよう
→ 例えば2回のループで1回ずつ処理していたものを,1ループで2回処理するように変更する等。
・描画コマンド数を出来るだけ減らすように
→ 例えば1Quadを8回処理するよりも, 8Quadsを1回処理した方が早いこともある。墓プラットフォームに関しては出来るだけまとめて描画したほうが良いみたい。
・データが不完全なことも考慮しておこう。
→ 例えば通信処理で送ったデータが途中の不完全なまま到着した場合などにも対応できるように実装しておく等。
・やっぱり自前が一番
→ 他のライブラリに依存しているとアップデートでいきなり使えなくなる等の影響がでて被害を被る場合がある。出来るだけ他のライブラリに依存しないように作ること。また,どうしても依存する場合には,影響が出ても吸収できるように柔軟性を持たせた設計にすること。
・馬鹿みたいに継承させすぎない
→ 継承先でマクロがあったりすると本当最悪。IntelliSence効かないし,ロジック分からないし,使い物にならないものが出来上がるだけ。
・コンパクトなライブラリが何だかんだ言って一番使い易い。
→ 馬鹿でかいエンジンも良いが,やっぱり身の丈にあっているコンパクトなライブラリが一番使い易いし,好まれる。
・マクロは出来るだけ使うな!
→ IntelliSenceが効かないし,コードがすげぇ汚くなるし,ロジックがわからなくなるので,外部向けに出すものとしては非常に良くない。
・依存度はできるだけ減らせ!
→ 墓ライブラリ的なものを使っているとたった1機能を使うために数十のファイルを必要とする。はっきりいって,そんな依存度の高いものは使いたくない。出来るだけ依存度が低いように設計すべし。
・汎用的に作るとパフォーマンスが遅くなりがち
→ パフォーマンスを求めるのか汎用性を持たせるのか,設計時にどちらをとるか考えるべし。出来れば共通できるところと共通できないところを明確に分けておいたほうが,後々良さげ。無理に共通化すると後で困る。
・パフォーマンスを求めるならループ内での関数呼出しは可能な限り避けるべし
→ ループ内での関数呼出しは出来るだけ避けたほうがパフォーマンス的に有利。関数よりもinline関数,inline関数よりもマクロの方が早いみたい。些細だがこれで一桁分稼げることも・・・。
・キャッシュ効率を考えよう
→ 例えば2回のループで1回ずつ処理していたものを,1ループで2回処理するように変更する等。
・描画コマンド数を出来るだけ減らすように
→ 例えば1Quadを8回処理するよりも, 8Quadsを1回処理した方が早いこともある。墓プラットフォームに関しては出来るだけまとめて描画したほうが良いみたい。
・データが不完全なことも考慮しておこう。
→ 例えば通信処理で送ったデータが途中の不完全なまま到着した場合などにも対応できるように実装しておく等。
・やっぱり自前が一番
→ 他のライブラリに依存しているとアップデートでいきなり使えなくなる等の影響がでて被害を被る場合がある。出来るだけ他のライブラリに依存しないように作ること。また,どうしても依存する場合には,影響が出ても吸収できるように柔軟性を持たせた設計にすること。
・馬鹿みたいに継承させすぎない
→ 継承先でマクロがあったりすると本当最悪。IntelliSence効かないし,ロジック分からないし,使い物にならないものが出来上がるだけ。
・コンパクトなライブラリが何だかんだ言って一番使い易い。
→ 馬鹿でかいエンジンも良いが,やっぱり身の丈にあっているコンパクトなライブラリが一番使い易いし,好まれる。
ちらほら・・・
ちらほらSIGGRAPH 2012の論文がアップされてきたみたいですね。
余力があれば西田研を見習って,abstractを全部和訳したいもんです。
余力があれば西田研を見習って,abstractを全部和訳したいもんです。
知らんかったよ。
ついに,GLSLのシェーダバイナリを吐き出すプログラムを完成させてたので,早速GLSLのコードを書いてみました。
attribute vec2 v_inPosition;
とか
varying vec4 v_outColor;
とか
書いていたんですが,作成したプログラムからWarningが出力される。
「なんで?」と思ったのですが,GLSLの方も結構仕様変更とかあったみたいで,
GLSL 4.0あたりから in とか out とかを使って書くようになったみたいですね。
なので・・・
attribute vec2 v_inPosition → in vec2 v_inPosition
varying vec4 v_outColor → out vec4 v_outColor
のように書けばいいみたいですね。
すごくスッキリ!
なんか,昔に比べるとかなりコーディングしやすくなりましたね。
・・・全然しらんかった。
久しぶりにちょっとやばいなって思いました。
そんなわけで,ちょっと勉強しようかな〜って思って,OpenGL 4.0 Shader Language Cookbookをポチっちゃいました。
あと自分,OpenGL Superbibleも持っているのですが,こちらも3rd Editionで,かな〜り古いので5th Editionも買うことにしました。
ちょっと,サボっていると時代遅れになってしまうので何とかサボった分を取り戻したいです。
attribute vec2 v_inPosition;
とか
varying vec4 v_outColor;
とか
書いていたんですが,作成したプログラムからWarningが出力される。
「なんで?」と思ったのですが,GLSLの方も結構仕様変更とかあったみたいで,
GLSL 4.0あたりから in とか out とかを使って書くようになったみたいですね。
なので・・・
attribute vec2 v_inPosition → in vec2 v_inPosition
varying vec4 v_outColor → out vec4 v_outColor
のように書けばいいみたいですね。
すごくスッキリ!
なんか,昔に比べるとかなりコーディングしやすくなりましたね。
・・・全然しらんかった。
久しぶりにちょっとやばいなって思いました。
そんなわけで,ちょっと勉強しようかな〜って思って,OpenGL 4.0 Shader Language Cookbookをポチっちゃいました。
![]() | OpenGL 4.0 Shading Language Cookbook: Over 60 Highly Focused, Practical Recipes to Maximize Your Use of the Opengl Shading Language (2011/07/30) David Wolff 商品詳細を見る |
あと自分,OpenGL Superbibleも持っているのですが,こちらも3rd Editionで,かな〜り古いので5th Editionも買うことにしました。
![]() | OpenGL SuperBible: Comprehensive Tutorial and Reference (2010/07/23) Richard S. Haemel, Nicholas S Sellers, Graham Lipchak, Benjamin Wright 商品詳細を見る |
ちょっと,サボっていると時代遅れになってしまうので何とかサボった分を取り戻したいです。
久しぶりにLIVE行ってきました!
先週末に久しぶりにLIVEに行ってきました。
何のLIVEかと言うと,ASUPARAGUSのツアーファイナルに行ってきました。
場所は渋谷O-Eastです。
やっぱりLIVEはいいですね☆
すごく楽しめたし,良いストレス発散になりましたよ〜
流石にダイブはしませんでしたが、ノリノリで騒いできました!
ここ数年で、こうして一緒に騒げる友人が減ってきてしまって,非常に寂しい限りです。
本当に一緒に騒げる友人がもっと欲しいです。
プログラマーという仕事をやっているせいか、あんまし騒ぐ人いないんですよね・・・。周りに
基本的パンク・メロコア,メタルが好きな性分で「好きですよ!」という人がいたら、多分きっと友達になれるに違いありません。
夏もFujiRockとか行きたいんですけどね〜。
誰かパンク,メロコア、メタル系好きな人いないですかね?
男女問わないので,いたら一緒にLIVE行きましょ♪
何のLIVEかと言うと,ASUPARAGUSのツアーファイナルに行ってきました。
場所は渋谷O-Eastです。
やっぱりLIVEはいいですね☆
すごく楽しめたし,良いストレス発散になりましたよ〜
流石にダイブはしませんでしたが、ノリノリで騒いできました!
ここ数年で、こうして一緒に騒げる友人が減ってきてしまって,非常に寂しい限りです。
本当に一緒に騒げる友人がもっと欲しいです。
プログラマーという仕事をやっているせいか、あんまし騒ぐ人いないんですよね・・・。周りに
基本的パンク・メロコア,メタルが好きな性分で「好きですよ!」という人がいたら、多分きっと友達になれるに違いありません。
夏もFujiRockとか行きたいんですけどね〜。
誰かパンク,メロコア、メタル系好きな人いないですかね?
男女問わないので,いたら一緒にLIVE行きましょ♪
これはDisable状態ですか?
Visual Studio 11 Betaをちょいちょい使っているのですが,
この画面の見づらさはどうにかならんのかね?
アイコンがほぼグレー化したことで,めちゃくちゃ使いづらい。
「っていうかこれ無効化されてる?」とまで思ってしまうような見づらさ。
全然"Visual"じゃないです。

VSの2010の方が個人的には好きです。
ハッキリ言うとデザインがダサい。
すげぇダサい。
※あくまでも個人的な感想。
見た目は,何かテキストエディタでちまちまコーディングしてるのと変わらん感じですよね。
VSは高いのに今回のVSは高級感がまるでないです。あのアイコンの多さが「すげぇ高級感!」とか思うのですが,今回のは全部同じグレーカラーなので,高級感よりも「わかりづれぇ!」というのが先に来ちゃいますね。
なんか見た目的には,PlayStation Stuite Studioと大差ない感じ。
デザイン的な所を考えると,やっぱりApple製品は良く見えちゃいますね。
マイクロソフトもデザインと使いやすさが良ければ,もっと使う人増えると思うんですけどね。
そろそろMac買おうかなって思います。
この画面の見づらさはどうにかならんのかね?
アイコンがほぼグレー化したことで,めちゃくちゃ使いづらい。
「っていうかこれ無効化されてる?」とまで思ってしまうような見づらさ。
全然"Visual"じゃないです。

VSの2010の方が個人的には好きです。
ハッキリ言うとデザインがダサい。
すげぇダサい。
※あくまでも個人的な感想。
見た目は,何かテキストエディタでちまちまコーディングしてるのと変わらん感じですよね。
VSは高いのに今回のVSは高級感がまるでないです。あのアイコンの多さが「すげぇ高級感!」とか思うのですが,今回のは全部同じグレーカラーなので,高級感よりも「わかりづれぇ!」というのが先に来ちゃいますね。
なんか見た目的には,PlayStation Stuite Studioと大差ない感じ。
デザイン的な所を考えると,やっぱりApple製品は良く見えちゃいますね。
マイクロソフトもデザインと使いやすさが良ければ,もっと使う人増えると思うんですけどね。
そろそろMac買おうかなって思います。
今更ながら…知る。
自前で組んだライブラリを使ってGLSLのシェーダバイナリを吐き出すツールを作っていて気付いたのですが,
wglGetProcAddressがNULLを返しておかしいなぁ〜っと思っていたのですが,glfwOpenWindow()とかウィンドウを生成した後じゃないとNULL以外のポインタを返してくれないんですね…。
調べてみると,コンテキストが無いとNULL返すらしい。
wglGetProcAddressがNULLを返しておかしいなぁ〜っと思っていたのですが,glfwOpenWindow()とかウィンドウを生成した後じゃないとNULL以外のポインタを返してくれないんですね…。
調べてみると,コンテキストが無いとNULL返すらしい。
移行開始です!
ども,会社の知り合いに「幸薄っ!!」と言われてしまったpocolです。
Project Asuraですが,新URLへの移行を開始しました!
新しいURLはhttp://project-asura.com/です。
とりあえず,一発目の記事をアップしておきました。
順次記事はアップしていきます。お楽しみに!
Project Asuraですが,新URLへの移行を開始しました!
新しいURLはhttp://project-asura.com/です。
とりあえず,一発目の記事をアップしておきました。
順次記事はアップしていきます。お楽しみに!
作成開始。
昨日から、ようやく新ホームページ用のプログラム作成をはじめました!
取り敢えず、前々からやりたかったGLの記事をきちんと書き直そうかと思います。
フレームワークをどうしようかと思ったんですが、コードがシンプルに書けそうなglfwを採用することにしました。
glfw見ちゃうと、もうglutを使う気はなくなっちゃいますね。
何よりもメインループを自前で実装できる所が素敵。
グローバル関数で、キー状態を取得できる所や、スレッド、ミューテックス、シグナルのサポート、おまけにテクスチャの読み込み関数までサポートされているので、簡単なサンプル作るだけなら十分です。
更に使おうと思っているGUIライブラリでもサンプルが用意されていたします。
そんなglfwを使ってサンプルを鋭意制作中です。
近日中には、アップ予定なので今しばらくお待ちを!
取り敢えず、前々からやりたかったGLの記事をきちんと書き直そうかと思います。
フレームワークをどうしようかと思ったんですが、コードがシンプルに書けそうなglfwを採用することにしました。
glfw見ちゃうと、もうglutを使う気はなくなっちゃいますね。
何よりもメインループを自前で実装できる所が素敵。
グローバル関数で、キー状態を取得できる所や、スレッド、ミューテックス、シグナルのサポート、おまけにテクスチャの読み込み関数までサポートされているので、簡単なサンプル作るだけなら十分です。
更に使おうと思っているGUIライブラリでもサンプルが用意されていたします。
そんなglfwを使ってサンプルを鋭意制作中です。
近日中には、アップ予定なので今しばらくお待ちを!
Getだぜ!
ついに独自ドメインを取得してしまいました!
現在,ページを整備中なので今しばらくお待ちください。
ちなみにGLの記事はすべてOpenGL 3.0以降で動作するように変更予定です。
シェーダはCgではなくGLSLに切り替えようかと思っています。
現在,ページを整備中なので今しばらくお待ちください。
ちなみにGLの記事はすべてOpenGL 3.0以降で動作するように変更予定です。
シェーダはCgではなくGLSLに切り替えようかと思っています。
ドメイン移行計画。
ホームページの方の更新が滞っているわけですが,ついに忍者ホームページのうざい広告がデカデカと表示されるようになってしまいました。
そんなわけで,そろそろ忍者ホームページも卒業しようかな?って思っています。
ホームページを移行するに当たって,OpenGLの古い記事は恥ずかしいコードいっぱいなので,サンプルコードの方も全面的に書き換えようかなと思っています。
あとは,せっかくなので独自ドメインも取得したいとこです。
そんなわけで,そろそろ忍者ホームページも卒業しようかな?って思っています。
ホームページを移行するに当たって,OpenGLの古い記事は恥ずかしいコードいっぱいなので,サンプルコードの方も全面的に書き換えようかなと思っています。
あとは,せっかくなので独自ドメインも取得したいとこです。



