OpenGL

メモ

任意軸周りの回転 http://www21.atwiki.jp/opengl/pages/144.html

3D文字列のサンプル

以下サンプル。以下のサイトのgl_test4.lzhを参考にした。 http://www2.ocn.ne.jp/~inu_inu/opengl/main.htm #include <stdafx.h> #include <windows.h> #include <GL/gl.h> #include <GL/glu.h> #include "wglfont.h" GBUN* create_3d_font(HDC hdc, char* str) { GBUN* bun; LOGFONT logfont; HFONT</gl/glu.h></gl/gl.h></windows.h></stdafx.h>…

OpenGLでの文字列の表示

基本的に、2通りある。 1) Bitmapで文字を表示する (wglUseFontBitmaps()を使用) 2) 3D文字で表示する (wglUseFontOutlines()を使用) 1)は一度フォントを作成したら拡大縮小が出来ない。 2)はglScalef()で拡大縮小が可能。 しかし、2)は厚みを持った3次元文…

OpenGLでの文字列の描画

以下の2通りある。 wglUseFontBitmaps wglUseFontOutlines 以下の例はうまく動かせなかった。さらに調査するつもり。 http://support.microsoft.com/kb/131024/ja

glOrthoとgluLookAt

glOrthoとgluLookAtは以下が参考になる。 シミュレーション屋のためのOpenGL入門プログラミング (http://www.nda.ac.jp/cc/users/iwase/OLD/COMP/OpenGL/glhowto.html#22) MFCによるOpenGLプログラミング (http://odalab.spub.chitose.ac.jp/~oda/lang/openg…

PyQt4でOpenGL

とりあえず、簡単なサンプルを作成した。 # coding: cp932 import sys from PyQt4 import QtCore, QtGui, QtOpenGL from OpenGL import GL, GLU, GLUT r = 0.0 light_ambient = [1.0, 1.0, 1.0, 1.0] # 環境光(白色) light_diffuse = [1.0, 1.0, 1.0, 1.0]…

ピッキング(ポリゴン選択)のサンプル

ネットに落ちていたものをPythonに移植したサンプルを一応貼っておく。 # coding: cp932 from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * WIDTH = 300 HEIGHT = 300 BUFSIZE = 64 def DrawObjects(): glLoadName(1) glBegin(GL…

ピッキング処理

OpenGLでピッキング(ポリゴン選択)処理をするには以下の方法で出来る。ソースコードはPython。 viewport = glGetIntegerv(GL_VIEWPORT) glSelectBuffer(BUFMAX) glRenderMode(GL_SELECT) … hits = glRenderMode(GL_RENDER) この方法でうまく選択出来ないで悩…

VertexPointer

OpenGLで一番高速な描画命令は? (http://d.hatena.ne.jp/malibu-bulldog/20100102/1262396039) PyOpenGL はじめました:glVertexPointer (http://d.hatena.ne.jp/kotsubu-chan/20051102) glVertexPointer glDrawElements を使用すると高速になるとの事だが…

メモ

OpenGLプログラミングコース (http://www.exa-corp.co.jp/solutions/common/ubiquitous/ubiquitous-solution/) 後で読む。

描画のパフォーマンス

OpenGL (http://www.songho.ca/opengl/index.html) テクスチャとかでなく単にポリゴン描画のパフォーマンスを上げるテクニックは以下の通り。 Display List Vertex Buffer Object(VBO) Tessellation Display ListとVBOのパフォーマンスを比較しているサイト…

移動、回転、拡大・縮小

OpenGLの難しさはテクニックについてあまり書かれた本や情報が少ないことではないだろうか?例えばモデルを移動、回転、拡大・縮小する際にやり方が色々ありどのやり方がベストなのかよく分らない。今読んでいる『OpenGL SuperBible 第4版』も一般的なことし…

DirectX

C#でOpenGLをやるには資料があまりにも少なすぎるのでDirectXを使えないか調べていたところ、Managed DirectXというキーワードに引っかかった。Managed DirectXを調べていたら、Microsoft XNAに置き換わると書いてあった。で、Microsoft XNAは、これからとい…

カメラの回転

OpenGLでのクォータニオンを利用した直感的な回転方法はだいたい分かった。今までカメラを回転させる方法を考えていたが、よく考えてみたらモデルを回転させれば十分だと分かった。同じことなので。まだOpenGLに関して分からない事も多いが、とりあえずC#のW…

クォータニオン

どうやら任意軸による回転やジンバルロックをしない回転はクォータニオンのみによって実現できる訳ではないらしい。オイラー角による回転でも実現できるらしい。クォータニオンを使用すると単に実行速度が速くなるだけらしい。しかし、オイラー角による回転…

直感的な回転

直感的な回転を実現するにはオイラー角による回転でなく、クォータニオン(四元数, しげんすう)による回転をしなければならないことが分かった。オイラー角による回転ではジンバルロックというものが発生してしまい直感的ではなくなる。クォータニオンの解説…

カメラの直感的回転

OpenGLでカメラの直感的回転の方法が分からない。「ゲームコーディングVol.1」にやり方が載っていたが、Direct3Dのやり方なので、OpenGLでのやり方は分からない。OpenGLでは行列をstaticな変数で管理しているため行列を取り出せない(と思う)が、直感的な回転…

C# graphics library

OpenGLをC#から利用する方法を色々調べたが、フリーで手に入るC# graphics library(CsGL)というのが良さそう。結局自分でゼロから作るのはかなり敷居が高そうなのでライブラリを利用することにした。http://csgl.sourceforge.net/ 付属のサンプルは知識不足…

座標変換

OpenGLを少し勉強して、座標変換の基礎がやっと分かった。OpenGLでは行列の状態などのデータを自分で管理せずにOpneGLの内部の変数を利用して管理する。staticなデータ、つまり行列を保持する「スタック」で変換の行列を管理している。現在操作対象の行列は…

OpenGL

最近、FEMのプリポストを作りたくて、OpenGLの勉強を始めた。GUIは、wxPythonを使用するつもりだが、3D CGとGUIは共に色々選択肢はある。 とりあえず、メジャーなライブラリを使いたいので、3D CGはOpenGLでOKとして、GUIは、Tkinterが標準なので、どちらが…