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

Небольшой код для C++ и Xors3D, с вращающимся тором и перемещением камеры. Для Code::Blocks 10.05

#include <iostream>
#include "xors3d.h"
//#include <string>
#include <cmath>


using namespace std;


int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
   xAppTitle( "Basic start" );
   xGraphics3D( 640,480,false,false,true );

   void Control(double speed, double mousesensitivity, Handle Camera, Handle Pivot);
    Handle Cube = xCreateTorus(16,4,1);
    Handle Pivot = xCreatePivot();
    Handle Camera = xCreateCamera(Pivot);
    Handle Light = xCreateLight(LIGHT_DIRECTIONAL);


        xTurnEntity(Light, 30.0, 30.0, 0.0);
        xMoveEntity(Cube, 0.0, 0.0, 10.0);

   while (xWinMessage("WM_CLOSE")==0 && xKeyHit(KEY_ESCAPE)==false)
   {
        xTurnEntity(Cube, 1.0, 1.0, 1.0);
        xMoveEntity(Cube,0,0.2*sin(xMillisecs()/1000),0);
      xRenderWorld();
        Control(1,1,Camera,Pivot);
      xFlip();
   }
   return 0;
}



void Control(double speed, double mousesensitivity, Handle Camera, Handle Pivot) {
    double mxs;
    double mys;
      if (xKeyDown(2)) xWireframe(true);
      if (not xKeyDown(2)) xWireframe(false);
      xText (10,10,"i'm still not able to use properly this function, so it's reason why this have an console output :)");
      if (xKeyHit(57))  {cout<<"FPS is "<<xGetFPS(); cout<<", time is "<<xMillisecs()<<"\n";  };
        mxs+=xMouseXSpeed()/5.0;
        mys+=xMouseYSpeed()/5.0;
        if (xKeyHit(3)) {cout<<mxs<<"   "<<mys<<"\n";};
        xTurnEntity (Camera,mousesensitivity*mys,-mousesensitivity*mxs,0);
        xMoveMouse (xGraphicsWidth()/2,xGraphicsHeight()/2);
        if (xKeyDown(17) || xKeyDown(200)) xMoveEntity (Camera,0,0,speed);
        if (xKeyDown(31) || xKeyDown(208)) xMoveEntity (Camera,0,0,-speed);
        if (xKeyDown(30) || xKeyDown(203)) xMoveEntity (Camera,-speed,0,0);
        if (xKeyDown(32) || xKeyDown(205)) xMoveEntity (Camera,speed,0,0);
        xPositionEntity (Pivot,xEntityX(Camera,1),xEntityY(Camera,1),xEntityZ(Camera,1));
        xPositionEntity (Camera,0,0,0);
}
Ибо в гугле на русском языке этого нет, но пусть будет.

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