⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glviewer.cc

📁 计算机图形学~想必是很多人需要的~在此共享一下
💻 CC
字号:
//GLViewer.cc#include "GLViewer.h"GLViewer::GLViewer(){  int i;  ViewerIndex=ViewerNum;  ViewerNum++;  WinName="";  BufType[ViewerIndex]=GLUT_SINGLE;  Root[ViewerIndex]=NULL;  for(i=0; i<3; i++)    BackColor[i]=0.0;}GLViewer::~GLViewer(){  if(Root[ViewerIndex])    {      delete Root[ViewerIndex];      Root[ViewerIndex]=NULL;    }}voidGLViewer::Init(int argc, char **argv){  if(ViewerIndex==0)    glutInit(&argc, argv);}void GLViewer::CreateWin(char *Name, int Width, int Height){  WinName=Name;  WinWidth[ViewerIndex]=Width;  WinHeight[ViewerIndex]=Height;}voidGLViewer::SetValue(Enum PName, Enum Type){  switch(PName)    {    case BUFFER:      if(Type==DOUBLE)	BufType[ViewerIndex]=GLUT_DOUBLE;      else if(Type==SINGLE)	BufType[ViewerIndex]=GLUT_SINGLE;      break;    case BACKCOLOR:      Root[ViewerIndex]->GetColor(Type, BackColor);      break;    default:      break;    }}voidGLViewer::Show(Node *N){  GLInit();  Root[ViewerIndex]=N;  if(ViewerIndex==(ViewerNum-1))    glutMainLoop();}//privatevoid GLViewer::GLInit(){  glutInitDisplayMode(BufType[ViewerIndex] | GLUT_RGB | GLUT_DEPTH);  glutInitWindowSize(WinWidth[ViewerIndex], WinHeight[ViewerIndex]);  glutCreateWindow(WinName);  switch(ViewerIndex)    {    case 0:      glutReshapeFunc(Reshape0);      glutDisplayFunc(Display0);      break;    case 1:      glutReshapeFunc(Reshape1);      glutDisplayFunc(Display1);      break;    case 2:      glutReshapeFunc(Reshape2);      glutDisplayFunc(Display2);      break;    default:      break;    }  glEnable(GL_DEPTH_TEST);  glClearColor(BackColor[0], BackColor[1], BackColor[2], 1.0);}voidGLViewer::Display0(){  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  Root[0]->Traverse();  if(BufType[0]==GLUT_DOUBLE)    glutSwapBuffers();  glFlush();}voidGLViewer::Reshape0(int w, int h){  glViewport(0, 0, (GLsizei)w, (GLsizei)h);  WinWidth[0]=w;  WinHeight[0]=h;}voidGLViewer::Display1(){  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  Root[1]->Traverse();  if(BufType[1]==GLUT_DOUBLE)    glutSwapBuffers();  glFlush();}voidGLViewer::Reshape1(int w, int h){  glViewport(0, 0, (GLsizei)w, (GLsizei)h);  WinWidth[1]=w;  WinHeight[1]=h;}voidGLViewer::Display2(){  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  Root[2]->Traverse();  if(BufType[2]==GLUT_DOUBLE)    glutSwapBuffers();  glFlush();}voidGLViewer::Reshape2(int w, int h){  glViewport(0, 0, (GLsizei)w, (GLsizei)h);  WinWidth[2]=w;  WinHeight[2]=h;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -