現在地 >> メニュー >> OpenCSG >> OpenCSG::01
Index:OpenCSG::00<< OpenCSG01 >> OpenCSG::02?

OpenCSGのクラス


OpenCSGは抽象クラスを提供しているのみである。
従って、プログラミングする際は、その抽象クラスを継承したクラスを用意する必要がある。

OpenCSGには、派生クラスの例として「displaylistPrimitive.h」、「displaylistPrimitive.cpp」がある。
これを使うと、ディスプレイリストに描画物を登録し、出力する事ができる。

使い方

  1. 「std::vector<OpenCSG::Primitive*> 」という「vector型」にデータをpushしていく。
  2. OpenCSG::render()で描画内容やアルゴリズムを指定
  3. glDepthFunc(GL_EQUAL)指定
  4. 「std::vector<OpenCSG::Primitive*>」にpushされたデータの「render()メンバ関数」を使う

【例】
GLuint id1 = glGenLists(1);
glNewList(id1, GL_COMPILE);
glutSolidSphere(1.2, 60, 60);
glEndList();

GLuint id2 = glGenLists(1);
glNewList(id2, GL_COMPILE);
glPushMatrix();
glTranslatef(0.0,1.0,1.0);
glutSolidCube(1.0);
glPopMatrix();
glEndList();

//付属派生クラスより(displaylistPrimitive.h、displaylistPrimitive.cppより)
//データのpush
primitives.push_back(new OpenCSG::DisplayListPrimitive(id1, OpenCSG::Intersection, 1));
primitives.push_back(new OpenCSG::DisplayListPrimitive(id2, OpenCSG::Subtraction, 1));

… …

//描画方法指定
OpenCSG::render(primitives, OpenCSG::Automatic, OpenCSG::NoDepthComplexitySampling);
glDepthFunc(GL_EQUAL);
for (std::vector<OpenCSG::Primitive*>::const_iterator Iter = primitives.begin(); Iter != primitives.end(); ++Iter) {
	(*Iter)->render(); //描画
}
glDepthFunc(GL_LESS);

サンプルコード

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます