OpenGL

OpenGLでSpriteBatchクラスを作る。

VertexBufferのテンプレート化 VertexBufferで扱う頂点は、 2Dか3Dか colorを持つかどうか テクスチャ座標を持つかどうか などユーザが自由に決めることができるので、テンプレート化しておくと便利です。 /** * 頂点バッファに特化したバッファオブジェクト…

BufferObjectクラスを作る。

今回はOpenGLでDirect3D風の頂点バッファクラス、インデックスバッファクラスを作ります。 まずはOpenGLのバッファオブジェクトの基礎から。 バッファオブジェクトの使用手順。 1.バッファオブジェクトが利用可能かどうか調べる。 1-1.サポートされているExt…

std::unique_ptrでHDCとHGLRCを扱う。

ゲームフレームワーク的なものを作る。番外編1。 windowsプログラミングにおいて、HDCなどのハンドルの管理は非常に面倒ですよね? HWND hwnd = ...; HDC hdc = GetDC( hwnd ); GDIを使った描画など; ReleaseDC( hwnd, hdc ); //使い終わったらReleaseするの…

ゲームフレームワーク的なものを作る。(10)〜OpenGLでテクスチャを使う〜

まずはOpenGLでテクスチャを使用する際の基本から。 R8G8B8A8の32bitテクスチャを作る GLuint texture; Size size( w, h ); DWORD pixel[] = { ... }; //適当なピクセルデータを設定しておく glGenTextures()で指定枚数のテクスチャを作成。とりあえず1でよ…

ゲームフレームワーク的なものを作る。まとめ。

とりあえず、ここまでのまとめ。 今後も週に1,2回程度のペースで追加していきます。 ゲームフレームワーク的なものを作る。(20)〜2Dキーフレームアニメーション〜 ゲームフレームワーク的なものを作る。(19)〜シーングラフ〜 ゲームフレームワーク的なもの…

ゲームフレームワーク的なものを作る。(9)〜OpenGLの初期化〜

今回はOpenGLを使った描画機能を追加していきます。久しぶりのOpenGLですね。 OpenGLの初期化 まず、OpenGLを利用するためのヘッダとライブラリをプロジェクトに追加します。VCをインストールすれば、標準で必要なファイルが含まれるので、特に新しくライブ…

ゲームフレームワーク的なものを作る。(8)〜描画エンジンの抽象化〜

描画エンジンの抽象化 windowsでゲームを作る場合、「Direct3D」か「OpenGL」を選択することになりますが、どちらも使ったことがある人であれば、誰もが一度はインターフェイスを用意して両方扱えるようにしたいと思うはず。 で、今回は上記のような単純なイ…

OpenGLを使ってみる。その4.2 -描画スレッドの停止条件を追加(WM_ENABLE)-

前回OpenGLを使ってみる。その4.1 -描画スレッドの停止と再開について- - while( c++ );のサンプルでバグがあったので修正します。 1.メニュー→ヘルプ→バージョン情報でモーダルダイアログを表示すると、ウィンドウが無効状態でも描画スレッドが実行さ…

OpenGLを使ってみる。その4.1 -描画スレッドの停止と再開について-

前回OpenGLを使ってみる。その4 -描画スレッド- - while( c++ );のサンプルでは、ウィンドウのリサイズ時(WM_SIZE)のみ描画スレッドを停止していました。 つまり、ウィンドウを最大化・最小化した時や、メニューを選択している時も描画ループが実行されま…

OpenGLを使ってみる。その4 -描画スレッド-

リアルタイムな描画を行うために、描画スレッドを導入します。 一般的にはメインスレッド内でPeekMessageを使ってwindowsイベントを処理し、 アイドル時に描画する形になると思いますが、 メインスレッドはwindowsイベントに専念し、サブスレッドで描画して…

OpenGLを使ってみる。その3 -テクスチャ-

※terragenで生成した画像です。 サンプル opengl03.zip VC++2008EE OpenGLには画像をロードするための関数が用意されていません。 そのため、自力でロードするか、既存のライブラリを利用することになります。何を使うか迷ったのですが、プラットフォームはw…

OpenGLを使ってみる。その2 -2Dポリゴンの描画-

まずは2Dポリゴンを描画します。 サンプル [download] VC++2008EE ビューポートの設定 スクリーン上の座標で頂点座標を指定できるように、ビューポート、プロジェクション行列、ビュー行列を設定します。 プロジェクション行列はglOrthoで正射影行列を設定…

OpenGLを使ってみる。その1 -初期化編-

OpenGLのレンダーターゲット周りを触ってみたくなったので、しばらくOpenGLを使っていきます。久しぶりのC++です。 開発環境 windows vista/xp VC++2008ExpressEdition c++ wgl(GLUTは使わない) ウィンドウを作る 面倒なのでWin32アプリケーションウィザード…