Тема: Странное.
Показать сообщение отдельно
Старый 13.02.2012, 13:55   #405
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Странное.

Испытал проблемы с прорисовкой моего треугольника.
Оно стало рисоваться только после добавления моей поверхности к сцене из стандартного примера.
Так и надо? Или просто мой треугольник не попадал в кадр?

#include <axelynx/axelynx.h>
using namespace axelynx;

int main()
{
        Engine *eng = Engine::Init();
        Window *wnd = eng->AddWindow(800,600);
        //TODO: Place your resource loading and scene creating code here


        Scene *s = eng->AddScene();
        Camera *cam = s->AddCamera();
        Surface *cube = StandartSurfaces::Cube();
        Entity *body = s->Add(cube);
	StandartShaders::Render::OnlyNormals()->SetUniform(Shader::SU_LIGHTPOS,vec3(0,5,7));
        body->SetShader(StandartShaders::Render::OnlyNormals());
        body->SetPosition(0,0,-6);

        Entity *turret = s->Add(cube);
        turret->SetParent(body);
        turret->SetShader(StandartShaders::Render::OnlyNormals());
        turret->SetPosition(0,0.0,-1.25);
        turret->SetScale(0.25);

        turret = turret->Copy();
        turret->SetPosition(0,0,1.25);

        turret = turret->Copy();
        turret->SetPosition(0,-1.25,0);

        turret = turret->Copy();
        turret->SetPosition(0,1.25,0);

        turret = turret->Copy();
        turret->SetPosition(-1.25,0,0);

        turret = turret->Copy();
        turret->SetPosition(1.25,0,0);


//*****************************************************
        Surface *user_surface = eng->CreateSurface(3,6);
        user_surface->Lock();

        user_surface->SetVertexPosition(0,0,-16,6);
        user_surface->SetVertexPosition(1,16,0,6);
        user_surface->SetVertexPosition(2,-16,0,6);

        user_surface->SetVertexTexCoord(0,vec2(0.5,1));
        user_surface->SetVertexTexCoord(1,vec2(1,0));
        user_surface->SetVertexTexCoord(2,vec2(0,0));

        user_surface->SetVertexNormal(0,0,1,0);
        user_surface->SetVertexNormal(1,0,1,0);
        user_surface->SetVertexNormal(2,0,1,0);

        user_surface->SetVertexColor(0,vec4(1.0f,1.0f,1.0f,1.0f));
        user_surface->SetVertexColor(1,vec4(1.0f,1.0f,1.0f,1.0f));
        user_surface->SetVertexColor(2,vec4(1.0f,1.0f,1.0f,1.0f));

        user_surface->SetTriangle(0,0,2,1);
        user_surface->SetTriangle(0,0,1,2);

        user_surface->RecalcTangents();
        user_surface->UnLock();
        //отрисовалось только после этого. Это правильно?
        s->Add(user_surface);
//****************************************************

        float dx=0,dy=0;

        while(wnd->isRunning())
        {
                if(KeyDown('A'))
                        dx -= 1.0;
                if(KeyDown('D'))
                        dx += 1.0;
                if(KeyDown('W'))
                        dy -= 1.0;
                if(KeyDown('S'))
                        dy += 1.0;
                //TODO: Place your rendering code here
                float dt = Timer::Delta() * 0.01;

                dx *= 0.95;
                dy *= 0.95;
                body->Turn(dt*dy,dt*dx,0);

                s->Render();

                wnd->Flip();
        }
        //TODO: Place your deinitalize code here
        eng->Free();
}
Нормали оно само пересчитывать не умеет?

Последний раз редактировалось dsd, 13.02.2012 в 16:53.
(Offline)
 
Ответить с цитированием