Тема: Xors3D
Показать сообщение отдельно
Старый 07.06.2013, 23:52   #651
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,021
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Xors3D

Сообщение от dsd Посмотреть сообщение
Ну так почитай, все вопросы и уйдут.
Не поможет.

Вот старый пример:

Include "headers\blitz3d\xorsbind.bb"
script = xLoadScript("pssm.txt")
xExecuteScript(script)
Это код блица, ничего не объявляется, получается движок сам всё находит.

В скрипте было следующие:
float CurveValue(float newvalue, float oldvalue, int increments)
{
    if(increments >  1) oldvalue = oldvalue - (oldvalue - newvalue) / increments;
    if(increments <= 1) oldvalue = newvalue;
    return oldvalue;
}

int main()
{
	// инициализация
	string path = "PSSM Demo via xScript";
	xAppTitle(path);
	xGraphics3D(800, 600, 32, 0, 1);
xJoyDown(0, 1);
	xCreateDSS(1024, 1024);
	xSetTextureFiltering(6);
	xAntiAlias(1);
	// камера
	int cam = xCreateCamera(0);
	xPositionEntity(cam, 0, 20, -210, 1);
	xCameraClsColor(cam, 190, 190, 190);
	xCameraRange(cam, 0.5, 2000);
	// инициализация PSSM
	xPSSMInit(cam, "media\\PSSM.fx", 1024);
	xPSSMLightTarget(0, -20, 0);
	xPSSMLightZoom(0.1);
	// мир
	path = "media\\city.b3d";
	int test = xLoadMesh(path, 0);
	xPSSMSetEntity(test, 1, 1);
	// пост-эффект для PSSM
	int poly = xCreatePostEffectPoly(cam, 1);
	int tex  = xCreateTexture(800, 600, 1, 1);
	int tex2 = xCreateTexture(800, 600, 1, 1); 
	int brushedmetal = xLoadFXFile("media\\Shadow_postEffect.fx");
	xSetEntityEffect(poly, brushedmetal);
	xSetEffectTechnique(poly, "Diffuse");
	xSetEffectMatrixSemantic(poly, "MatWorldViewProj", 1);
	xSetEffectTexture(poly, "tDiffuse", tex, 0);
	xSetEffectTexture(poly, "tEmissive", tex2, 0);
	// главный цикл
	while(!xKeyDown(1))
	{
		// управление камерой
		if(xKeyDown(17)) xMoveEntity(cam, 0, 0, 1, 0);
		if(xKeyDown(31)) xMoveEntity(cam, 0, 0, -1, 0);
		if(xKeyDown(30)) xMoveEntity(cam, -1, 0, 0, 0);
		if(xKeyDown(32)) xMoveEntity(cam, 1, 0, 0, 0);
		float mxs = CurveValue(xMouseXSpeed() * 0.5, mxs, 4.5);
		float mys = CurveValue(xMouseYSpeed() * 0.5, mys, 4.5);
		float camxa = camxa - mxs % 360; 
		float camya = camya + mys;
		if(camya < -89) camya = -89;
		if(camya >  89) camya =  89;
		xMoveMouse(400,300);
		xRotateEntity(cam, camya, camxa, 0, 0);
		// обновление позиции и вращения источника света
		xUpdateWorld(1.0);
		xPSSMLightSource(-600, 450, 600);
		float fLightRotation = float(timeGetTime() / 1500.0);
		xPSSMLightSource(-600 * sin(fLightRotation), 450, 600 * cos(fLightRotation));
		// рендер мира
		xPSSMRender(cam, 0.85, 4, tex);
		xSetBuffer(xTextureBuffer(tex2, 0));
		xRenderWorld(1.0);
		xSetBuffer(xBackBuffer());
		xRenderPostEffect(poly);
		// вывод на экран
		xText(10, 10, "FPS: " + xGetFPS(), 0, 0);
		xFlip();
	}
	return 1;
}
(Offline)
 
Ответить с цитированием