3DTOOLS.CPP
上传用户:abcdshs
上传日期:2007-01-07
资源大小:1858k
文件大小:2k
源码类别:

游戏

开发平台:

Visual C++

  1. // (C) Copyright 1996 by Anthony J. Carin.  All Rights Reserved.
  2. #include "stdafx.h"
  3. #include <3dtools.h>
  4. #include <bmpsurf.h>
  5. #include <levels.h>
  6. tc3dtools::tc3dtools()
  7. {
  8.    m_material[0]      =
  9.    m_material[1]      =
  10.    m_material[2]      = 0.7f;
  11.    m_material[3]      = 1.0f;
  12.    m_lightposition[0] = 1.0f;
  13.    m_lightposition[1] = 2.0f;
  14.    m_lightposition[2] = 0.0f;
  15.    m_lightposition[3] = 1.0f;
  16. }
  17. void tc3dtools::material(tccolor& c)
  18. {
  19.    m_material[0] = c.rvalue();
  20.    m_material[1] = c.gvalue();
  21.    m_material[2] = c.bvalue();
  22.    glMaterialfv(GL_FRONT, GL_AMBIENT, m_material);
  23. }
  24. void tc3dtools::reset()
  25. {
  26.     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  27.     glLoadIdentity();
  28. }
  29. void tc3dtools::lookat(coordinate& camera, coordinate& aim)
  30. {
  31.     bmpsurf *bsurf;
  32.     bsurf = Game->Bmpsurfs()->First();
  33.     while (bsurf)
  34.     {
  35. #ifdef EDITOR
  36.         if (!Game->LevelPtr()->selection)
  37. #endif
  38.         if (bsurf->intersects(camera, aim))
  39.             camera = bsurf->intersectingpoint();
  40.         bsurf = Game->Bmpsurfs()->Next();
  41.     }
  42.     gluLookAt(camera.x(), camera.y(), camera.z(),
  43.               aim.x(), aim.y(), aim.z(),
  44.               aim.x(), aim.y()+100, aim.z());
  45. }
  46. void tc3dtools::lightposition(coordinate &c)
  47. {
  48.     m_lightposition[0] = c.x();
  49.     m_lightposition[1] = c.y();
  50.     m_lightposition[2] = c.z();
  51.     glLightfv(GL_LIGHT0, GL_POSITION, m_lightposition);
  52. }
  53. void tc3dtools::finish()
  54. {
  55.     glFinish();
  56.     SwapBuffers(wglGetCurrentDC());
  57. }
  58. void tc3dtools::beginbmp()
  59. {
  60.     glEnable(GL_TEXTURE_2D);
  61.     glBegin(GL_QUADS);
  62. }
  63. void tc3dtools::endbmp()
  64. {
  65.     glEnd();
  66.     glDisable(GL_TEXTURE_2D);
  67. }
  68. void tc3dtools::bmpvertex1(float x, float y, float z)
  69. {
  70.     glTexCoord2f(1.0f, 0.0f);
  71.     glVertex3f(x, y, z);
  72. }
  73. void tc3dtools::bmpvertex2(float x, float y, float z)
  74. {
  75.     glTexCoord2f(0.0f, 0.0f);
  76.     glVertex3f(x, y, z);
  77. }
  78. void tc3dtools::bmpvertex3(float x, float y, float z)
  79. {
  80.     glTexCoord2f(0.0f, 1.0f);
  81.     glVertex3f(x, y, z);
  82. }
  83. void tc3dtools::bmpvertex4(float x, float y, float z)
  84. {
  85.     glTexCoord2f(1.0f, 1.0f);
  86.     glVertex3f(x, y, z);
  87. }