Lights, Camera, Action!
I've got cameras, lights and geometry (with correct normal calculation, culling, etc.) up and running, and I thought I'd give you all a screenshot! :glasses: (Just to show off :glasses:)
Source code for this:
#include <TGE.h> #pragma comment(lib, "TGE.lib") Interface( MyInterface ) { Window * win; Renderer * renderer; Scene * scene; Camera * cam; Object * obj, * obj2, * obj3, * obj4; Primitive * tri1, * tri2, * tri3, * tri4, * tri5, * tri6, * tri7, * tri8; Light * light1, * light2; void Initialise() { win = pRoot->CreateWindow("Test window"); renderer = pRoot->CreateRenderer(Direct3D9); WindowParams winParams; winParams.width = 640; winParams.height = 480; winParams.posX = 50; winParams.posY = 50; win->SetParams(winParams); win->AttachRenderer(renderer); } void CreateScene() { scene = renderer->CreateScene(); cam = scene->CreateCamera(); light1 = scene->CreateLight(); light2 = scene->CreateLight(); cam->SetPosition(Vector(12, 5, -35)); cam->SetLookAt(Vector(0, 0, 0)); obj = scene->CreateObject(); obj2 = scene->CreateObject(); obj3 = scene->CreateObject(); obj4 = scene->CreateObject(); obj2->SetRotation(Vector(-90,0,0)); obj2->SetPosition(Vector(0,-5,0)); obj3->noLighting = true; obj4->noLighting = true; tri1 = obj->CreatePrimitive(); tri2 = obj->CreatePrimitive(); tri3 = obj->CreatePrimitive(); tri4 = obj->CreatePrimitive(); tri5 = obj2->CreatePrimitive(); tri6 = obj2->CreatePrimitive(); tri7 = obj3->CreatePrimitive(); tri8 = obj4->CreatePrimitive(); tri1->Create(Triangle, Vector(-3.3f, -5, -3.3f), Vector( 3.3f, -5, -3.3f), Vector( 0, 5, 0)); tri2->Create(Triangle, Vector(-3.3f, -5, 3.3f), Vector( 3.3f, -5, 3.3f), Vector( 0, 5, 0)); tri3->Create(Triangle, Vector( 3.3f, -5, -3.3f), Vector( 3.3f, -5, 3.3f), Vector( 0, 5, 0)); tri4->Create(Triangle, Vector(-3.3f, -5, -3.3f), Vector(-3.3f, -5, 3.3f), Vector( 0, 5, 0)); tri5->Create(Triangle, Vector(-10, -10, 0), Vector( 10, -10, 0), Vector(-10, 10, 0)); tri6->Create(Triangle, Vector( 10, -10, 0), Vector(-10, 10, 0), Vector( 10, 10, 0)); tri7->Create(Triangle, Vector(-1, -1, 0), Vector(1, -1, 0), Vector(0,1,0)); tri8->Create(Triangle, Vector(-1, -1, 0), Vector(1, -1, 0), Vector(0,1,0)); } void HandleEvent(Event * evt) { float light1X = 5*cos(timeGetTime()/350.0f); float light1Z = 5*sin(timeGetTime()/350.0f); float light2Y = 15*sin(timeGetTime()/550.0f); float light2Z = 15*cos(timeGetTime()/550.0f); light1->SetPosition(Vector(light1X, 5, light1Z)); light2->SetPosition(Vector(0, light2Y, light2Z)); obj3->SetPosition(Vector(light1X, 5, light1Z)); obj4->SetPosition(Vector(0, light2Y, light2Z)); } }; Main() { pRoot->RegisterInterface(MyInterface); }
The white triangles demonstrate the 'noLighting' state, in which they are always lit 100%. The triangles are at the same position as the two lights at the scene, for indication purposes.
Sign in to follow this
Followers
0
51 Comments
Recommended Comments
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now