Nebula CommunityФорум

Как вы строите свои приложения на Nebula?

#0
16:07, 21 фев 2008

Я уже запутался, использовать ли мне Mangalore? Использовать ли nApplication? Использовать ли nNebulaUsePackage(package) + nKernelServer.AddPackage(package)? Как вы делаете? Может что-нить подскажите

#1
0:11, 31 мар 2008

Присоединяюсь к вопросу )

#2
17:59, 3 апр 2008

Я только начал разбираться с Nebula, включил в свой проект только исходники из nebula2 (без Mangalore). Использую  nNebulaUsePackage и nKernelServer.AddPackage. Всё компилится, окошко создаётся, НО ничё не рисуется.
Люди, покажите, пожалуйста, как нарисовать простой красный кубик, а то никак не получается.
У меня примерно так:

...
  nGfxServer2* gfxServer = refGfxServer.get();

  nLight light;
  light.SetAmbient(vector4(0.2f, 0.2f, 0.2f, 1.0f));
  light.SetDiffuse(vector4(0.8f, 0.8f, 0.8f, 1.0f));
  light.SetSpecular(vector4(1.0f, 1.0f, 1.0f, 1.0f));
  light.SetType(nLight::Type::Point);
  matrix44 lightTrans = matrix44.identity;
  lightTrans.translate(vector3(-10.0f, -10.0f, -10.0f));
  light.SetTransform(lightTrans);
  gfxServer->AddLight(light);

  nCamera2 camera;
  camera.SetPerspective(60.0f, 4.0f/3.0f, 0.1f, 1000.0f);
  camera.SetType(nCamera2::Type::Perspective);

  gfxServer->SetCamera(camera);

  // trigger the gfx server once every frame
  // Trigger() returns false if you close the window
  while (gfxServer->Trigger())
  {
    gfxServer->BeginFrame();
    gfxServer->BeginScene();
    gfxServer->Clear(nGfxServer2::ColorBuffer | nGfxServer2::DepthBuffer, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0);
    Render();
    gfxServer->EndScene();
    gfxServer->PresentScene();
    gfxServer->EndFrame();

    // allow Windows to multitask
    n_sleep(0.0);
  }

...

void Render()
{
  nGfxServer2* gfxServer = refGfxServer.get();
  matrix44 tran;
  tran = matrix44.identity;

  gfxServer->BeginShapes();
  gfxServer->DrawShape(nGfxServer2::ShapeType::Box, tran, vector4(1.0f, 0.0f, 0.0f, 1.0f));
  gfxServer->EndShapes();
}
#3
16:38, 8 июля 2008

1. Освещение. Лучше все-таки прочитать stdlight.n2 и уж точно рендерить источник света на каждом кадре.
2. Камера стоит в нуле, кубик рисуется тоже в нуле. Так что может быть мы просто видим back-face, который мы не видим.
3. this->refGuiServer->Trigger(); и попробовать увидеть менюшку.
4. не gfxServer->BeginScene(), а refSceneServer->BeginScene(viewMatrix)
5. основной цикл:
            if (this->refSceneServer->BeginScene(viewMatrix))
            {
                for (uint index = 0; index < this->nodeList.GetCount(); index++)
                {
                    this->refSceneServer->Attach(this->nodeList.GetRenderContextAt(index));
                }
/*
    вот здесь, например, вызвать рендер кубика
/

                this->refSceneServer->RenderScene();            // renders the 3d scene
                this->refSceneServer->EndScene();
                this->OnFrameRendered();
                this->refSceneServer->PresentScene();            // present the frame
            }

-------
Это то, что сразу бросилось в глаза. Самое главное - refSceneServer->RenderScene() - не вызывалось!

#4
20:27, 10 июля 2008

STC
спасибо за советы.

Nebula CommunityФорум

Тема в архиве.