Тема: axelynx
Показать сообщение отдельно
Старый 18.06.2011, 01:16   #107
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: axelynx

тест асинхронной загрузки текстур:
в заголовке окна пишется время на создание сцены потраченное

Async грузит текстуры во втором потоке
Sync грузит сразу

просьба проверить на корректность работы оба екзешника

архив тяжелый (~10 метров)
http://axelynx.googlecode.com/files/...yncLoading.zip

свой формат текстур будет подерживать постепенную загрузку мипов. но до етого времени пока...

текстура грузится асинхронно так:
Texture *tex = eng->LoadTexture(tname,Texture::Desc().ASync(true));
вот весь исходник теста:
#include <axelynx.h>
using namespace axelynx;

int main()
{
	Engine *eng = Engine::Init();
	Window *wnd = eng->AddWindow(800,600);
	
	Scene *scene = eng->AddScene();
	Camera *cam = scene->AddCamera();
	Surface *cube = StandartSurfaces::Cube();
	Material *m = eng->CreateMaterial();
	m->SetShader(StandartShaders::Render::TexturingLighting());
	StandartShaders::Render::TexturingLighting()->SetUniform(Shader::SU_LIGHTPOS,vec3(100,100,100));
	m->UseEntityTextures(true);

	Texture *tex[16];
	
	Timer::Delta();

	for(int i = 0; i<16; ++i)
	{
		wchar_t tname[80];
		swprintf(tname,L"%d.jpg",i);
		tex[i] = eng->LoadTexture(tname,Texture::Desc().ASync(false));

		Entity *ent = scene->Add(cube);
		ent->SetPosition((i/4) * 5 - 12.5,(i%4) * 5 - 12.5,-40);
		ent->SetMaterial(m);
		ent->SetTexture(tex[i]);
	}

	float loading_time = Timer::Delta();

	wchar_t wbuff[80];
	swprintf(wbuff,L"loading time: %f ms",loading_time);
	wnd->SetText(wbuff);

	while(wnd->isRunning())
	{
		cam->Turn(0,0,0.2);
		scene->Render();

		wnd->Flip();
	}
	
	eng->Free();
}
(Offline)
 
Ответить с цитированием