0

私の現在の作業コード:

void GraphicFunctions::drawECM(const OpenGLCamera& camera)
{
   gl->drawECMEdges(camera, ecm, layerID);
}

OpenGLクラス:

void OpenGL::draw(const OpenGLCamera& camera)
{
   const vector<double>& cameraBBox = camera.getBoundingBox();
}

「OpenGLCamera」をもっと一般的にして、ポインタなどにすることはできますか?たとえば、次のようなものです。

void GraphicFunctions::drawECM(const OpenGLCamera& camera)
{
   const int* camerapointer = camera;
   gl->drawECMEdges(camerapointer, ecm, layerID);
}

OpenGLクラス:

void OpenGL::draw(const int& camera)
{
   const vector<double>& cameraBBox = camera->getBoundingBox();
}

このようにして、他の種類のカメラも使用できるようになります...!

4

1 に答える 1

0

継承を使用して、さまざまなカメラタイプを追加するだけです。これは、参照によってそれらを渡す場合にも機能します

struct Camera1 : public OpenGLCamera
{
  // reimplement something
}
struct Camera2 : public OpenGLCamera
{
}

今、あなたはそれらをに渡すことができますOpenGL::draw(const OpenGLCamera& camera)

于 2013-03-26T11:48:26.330 に答える