RAYREND.CPP
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:1k
源码类别:

游戏

开发平台:

Visual C++

  1. #include "ray.h"
  2. #include "rayrend.h"
  3. #include "raycl.h"
  4. #include "rayvb.h"
  5. #include "globals.h"
  6. #include "voxinter.h"
  7. #include "asm.h"
  8. #include "scrconf.h"
  9. #define MIN_RENDER_MODE 0
  10. #define MAX_RENDER_MODE 1
  11. #define APPROX_INFO_SIZE 10
  12. void Render_Init() {
  13. bounds=(vb_node *)NewPtr(Get_Phys_Screen_Width() * sizeof(vb_node));
  14. wall_runs=(wall_run_info *)NewPtr(MAX_WALL_RUNS * sizeof(wall_run_info));
  15. floor_runs=(floor_run_info *)NewPtr(MAX_FLOOR_RUNS * sizeof(floor_run_info));
  16. Draw_Sub_Sector_Setup();
  17. Init_Slope_Table();
  18. }
  19. void Render_Close() {
  20.    DelPtr(bounds);
  21.    DelPtr(wall_runs);
  22.    DelPtr(floor_runs);
  23.    Draw_Sub_Sector_Close();
  24.    Clear_Slope_Table();
  25. }
  26. render_type render_mode;
  27. void Render_Screen(long x, long y, long z, long view_angle) {
  28.    switch (render_mode) {
  29.    case MODE_3D:
  30.       Ray_Caster(x, y, z, view_angle);
  31.       break;
  32.    case MODE_2D:
  33.       Render_2d(x, y, view_angle);
  34.       break;
  35.    default: 
  36.      break;
  37.    } /* endswitch */
  38. }
  39. void SwitchRenderMode() {
  40.    render_mode++;
  41.    if (render_mode > MAX_RENDER_MODE) {
  42.       render_mode=MIN_RENDER_MODE;
  43.    } /* endif */
  44.    clearBuff();
  45. }
  46. void SetRenderMode(render_type mode) {
  47.    render_mode=mode;
  48.    clearBuff();
  49. };
  50. render_type GetRenderMode() { return render_mode; };