|
|
#pragma warning(disable: 4786)
#include <iostream>
#include <cstdlib>
#include <vector>
#include <algorithm>
#include <glut.h>
#include <memory>
#include <functional>
#include <GL/glaux.h>
#pragma comment(lib, "glaux.lib")
#include "myut/ASSERT.H"
#include "3ds/LOADER.H"
#include "3ds/M3D.H"
#include "3ds2gl/MY3DS2GL.H"
using namespace my3ds;
using namespace my3ds2gl;
using namespace std;
static Loader myld;
static M3D m3d;
static GLuint dislist; //display list
static GLuint listnum; //number of display list
static ListRange lr; //display list range
typedef vector<AUX_RGBImageRec*> IMGS; //for debug
static IMGS vImgs; //for debug
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
static int distance = 0;
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 500.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
{
glTexCoord3f(0.0, 0.0, 0.0);
glVertex3f(-100.0, -100.0, 1.0);
glTexCoord3f(1.0, 0.0, 0.0);
glVertex3f(100.0, -100.0, 1.0);
glTexCoord3f(1.0, 1.0, 0.0);
glVertex3f(100.0, 100.0, 1.0);
glTexCoord3f(0.0, 1.0, 0.0);
glVertex3f(-100.0, 100.0, 1.0);
}
glEnd();
glFlush();
glDisable(GL_TEXTURE_2D);
}
void init (void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
glEnable(GL_DEPTH_TEST);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, 1.0, 0.0, 500.0);
glMatrixMode(GL_MODELVIEW);
glEnableClientState(GL_VERTEX_ARRAY);
MDATA_t::MES& mes = m3d.m_MG.m_MD.m_MES;
for(MDATA_t::MES::iterator i=mes.begin(); i!=mes.end(); ++i)
{
AUX_RGBImageRec* pImg = auxDIBImageLoad(i->m_MT.m_MM.m_strName.c_str());
vImgs.push_back(pImg);
}
unsigned int unTex;
glGenTextures(1, &unTex);
glBindTexture(GL_TEXTURE_2D, unTex);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1); //only for debug
gluBuild2DMipmaps( GL_TEXTURE_2D,
3,
vImgs[0]->sizeX,
vImgs[0]->sizeY,
GL_RGB,
GL_UNSIGNED_BYTE,
vImgs[0]->data );
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glEnable(GL_TEXTURE_2D);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow ("hello");
myld.open(argv[1], m3d);
init ();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
|
|