読者です 読者をやめる 読者になる 読者になる

OpenGL

OpenGLをC++11でラップしてみんとてするなり 番外編:Qt5+OpenGLの落とし穴

先日、ひょんな事からglutで作ったライブラリをQt5に移植してみることになりました。 作業自体は大変なことではなく、glutのラッパーとして作った各種のクラス群を、QGLWidgetのラッパーとして作り変えてやるだけです。当然、理想的な設計がされたライブラリ…

OpenGLをC++11でラップしてみんとてするなり 第7回

今回のテーマはテクスチャ。今までと比べると単に作って破棄する機能が増えただけに見えて、実はかなり厄介です。 というのも、インスタンスの作成から破棄までの間でコンテキストが切り替わらない今までの機能とは異なり、コンテキストが切り替わってもデー…

OpenGLをC++11でラップしてみんとてするなり 第6.5回

そういえば、gl::Matrixクラスの各種操作がMatrixにしか対応していなかったので、Matrixにも対応するようにしましょう。 まずは、行列操作関数をまとめた次のようなクラスを作り、必要な型(floatとdouble)に対して特殊化をします。それ以外の型に対しては…

OpenGLをC++11でラップしてみんとてするなり 第6回

それでは今回は、行列計算のラッパークラスを作りたいと思います。 ●4x4行列 OpenGLでの行列のメモリモデルは、次のようになっています。次元数を任意に拡張して、さらに要素型も任意にできるよう、次のようなクラスにしてみます。 今回は長くなるので省きま…

右辺値参照とムーブセマンティクス

資料だけならWeb上に多かれど、いまいちピンとこないのがこの2つの機能ではないかと思います。大体この2つはセットにして語られるので、どこからどこまでが右辺値参照の機能でどこからどこまでがムーブセマンティクスの機能なのかを混同してしまう、というこ…

OpenGLをC++11でラップしてみんとてするなり 第5回

早速、前回(第4回)で作ったDepthTestのインスタンスを、gl::Contextのメソッド中で作成するようにしてみます。 gl/Context.h namespace gl { class Context : noncopyable<Context> { // 一部省略 public : DepthTest depth_test(bool enabled) { return DepthTest(</context>…

OpenGLをC++11でラップしてみんとてするなり 第4回

●glEnable()/glDisable()/glIsEnabled()の使い方 まず最初に、サンプルとなるコードを提示します。 main.cpp #include "glall.h" #include "glut/Window.h" /** * glut::Windowを継承してウィンドウを作る */ class Window : public glut::Window { public :…

C++ 可変長引数テンプレートのお話

前回のソースコードの中で1点だけ、C++11らしい機能の紹介を。 C++11の機能という点ではgl/InputConstants.h内でenum classを使ってはいますが、基本的なことしかしていませんので省略します。●可変長引数テンプレート glut/Window.hに1ヵ所だけ、テンプレー…

OpenGLをC++11でラップしてみんとてするなり 第3回

●GLコンテキストクラスの実装 前回(第2回)で述べたように、OpenGL関連の処理は、コンテキストクラス内に用意することにしました。 このクラスの実装は、次のようになっています。 gl/Context.h namespace gl { class Context { protected : Context() {} v…

OpenGLをC++11でラップしてみんとてするなり 第2回

OpenGLの機能を全てラップしたライブラリをブログ上で開発する気など毛頭ありませんので、OpenGLとC++11の紹介となるようなサンプルを幾つか作っていこうと思います。 今のところ、以下の4つの機能を実装していこうかと思いますが、他にも面白そうなネタが見…

OpenGLの仕組み

現代的なオブジェクト指向プログラミングから入ったプログラマーにとっては、OpenGLは時に、摩訶不思議な振る舞いをするように感じることがあります。 それもそのはず、教科書的なOOPではグローバル変数などは唾棄すべき禁忌の1つとされていますので、そもそ…

OpenGLをC++11でラップしてみんとてするなり 第1回

株式会社CFlatの技術ブログをスタートします。 メンバーが技術的に面白いと感じる題材、ハマったことなどをツラツラとアップしていきます。 だいたい週一回程度のペースのアップを考えております。 最初から連載物になりますが、それではどうぞ。 『諸君、私…