//This file is part of Photon (http://photon.sourceforge.net) //Copyright (C) 2004-2005 James Turk // // Author: // James Turk (jpt2433@rit.edu) // // Version: // $Id: Texture_test.cpp,v 1.8 2005/08/08 06:37:10 cozman Exp $ #include "photon.hpp" using namespace photon; #include "FPSDisplayTask.hpp" // used to display FPS in title bar class MainState : public State { public: MainState() : app(Application::getInstance()) { video::Texture::addResource("data/icon.png"); video::Texture::addResource("robo","data/robo.png"); // Testing of errors, uncomment to get various errors //video::Texture::addResource("nonfile"); // non-existant file //video::Texture::addResource("Texture_test.cpp"); // non-image file //tex[0].open("badresource"); // opening of non-existant resource tex[0].open("data/icon.png"); tex[1].open("robo"); tex[2] = tex[1]; } void render() { // draw first texture at actual size tex[0].bind(); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex2f(0,0); glTexCoord2f(1,0); glVertex2f(tex[0].getWidth(),0); glTexCoord2f(1,1); glVertex2f(tex[0].getWidth(),tex[0].getHeight()); glTexCoord2f(0,1); glVertex2f(0,100); glEnd(); // draw second texture on a diamond shaped polygon tex[1].bind(); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex2f(250,200); glTexCoord2f(1,0); glVertex2f(300,250); glTexCoord2f(1,1); glVertex2f(250,300); glTexCoord2f(0,1); glVertex2f(200,250); glEnd(); // draw texture and test Texture's boolean operator if(tex[2]) { tex[2].bind(); glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex2f(400,400); glTexCoord2f(1,0); glVertex2f(500,400); glTexCoord2f(1,1); glVertex2f(500,500); glTexCoord2f(0,1); glVertex2f(400,500); glEnd(); } } private: video::Texture tex[3]; Application& app; }; int PhotonMain(const StrVec& args) { // create window Application::getInstance().createDisplay(800,600,32,0,0,false); // be sure to add FPSDisplayTask Kernel::getInstance().addTask(TaskPtr(new FPSDisplayTask())); // set current state Application::getInstance().setCurrentState(); // run until finished Kernel::getInstance().run(); return 0; }