首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

C语言宏定义有关问题 opengl

2012-06-12 
C语言宏定义问题 opengl请问下面一段到底什么怎么个定义法,宏定义吗?#define drawOneLine(x1,y1,x2,y2)glB

C语言宏定义问题 opengl
请问下面一段到底什么怎么个定义法,宏定义吗?
#define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); \
  glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd();

程序的具体代码是:
#include <GL/glut.h>
#include <stdlib.h>
#define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); \
  glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd();
void init(void)
{
  glClearColor(0.0,0.0,0.0,0.0);
  glShadeModel(GL_FLAT);
}
void display(void)
{
  int i;
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f (1.0, 1.0, 1.0);
  glEnable (GL_LINE_STIPPLE);
   
  glLineStipple (1, 0x0101); /* dotted */
  drawOneLine (50.0, 125.0, 150.0, 125.0);
  glLineStipple (1, 0x00FF); /* dashed */
  drawOneLine (150.0, 125.0, 250.0, 125.0);
  glLineStipple (1, 0x1C47); /* dash/dot/dash */
  drawOneLine (250.0, 125.0, 350.0, 125.0);

   
  glLineWidth (5.0);
  glLineStipple (1, 0x0101); /* dotted */
  drawOneLine (50.0, 100.0, 150.0, 100.0);
  glLineStipple (1, 0x00FF); /* dashed */
  drawOneLine (150.0, 100.0, 250.0, 100.0);
  glLineStipple (1, 0x1C47); /* dash/dot/dash */
  drawOneLine (250.0, 100.0, 350.0, 100.0);
  glLineWidth (1.0);

  glLineStipple (1, 0x1C47); /* dash/dot/dash */
  glBegin (GL_LINE_STRIP);
  for (i = 0; i < 7; i++)
  glVertex2f (50.0 + ((GLfloat) i * 50.0), 75.0);
  glEnd ();
 for (i = 0; i < 6; i++) {
  drawOneLine (50.0 + ((GLfloat) i * 50.0), 50.0,
  50.0 + ((GLfloat)(i+1) * 50.0), 50.0);
  }
 glLineStipple (5, 0x1C47); /* dash/dot/dash */
  drawOneLine (50.0, 25.0, 350.0, 25.0);

  glDisable (GL_LINE_STIPPLE);
  glFlush ();
}
void reshape (int w, int h)
{
  glViewport (0, 0, (GLsizei) w, (GLsizei) h);
  glMatrixMode (GL_PROJECTION);
  glLoadIdentity ();
  gluOrtho2D (0.0, (GLdouble) w, 0.0, (GLdouble) h);
}

void keyboard(unsigned char key, int x, int y)
{
  switch (key) {
  case 27:
  exit(0);
  break;
  }
}

int main(int argc, char** argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize (400, 150); 
  glutInitWindowPosition (100, 100);
  glutCreateWindow (argv[0]);
  init ();
  glutDisplayFunc(display); 
  glutReshapeFunc(reshape);
  glutKeyboardFunc(keyboard);
  glutMainLoop();
  return 0;
}

[解决办法]
宏定义.即代码中
drawOneLine(x1,y1,x2,y2)这样的语句都将被替换成

glBegin(GL_LINES); glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd();

[解决办法]

探讨

引用:

宏定义.即代码中
drawOneLine(x1,y1,x2,y2)这样的语句都将被替换成

glBegin(GL_LINES); glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd();


为什么还要加一个反斜杠呢?

[解决办法]
探讨
引用:

宏定义.即代码中
drawOneLine(x1,y1,x2,y2)这样的语句都将被替换成

glBegin(GL_LINES); glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd();


为什么还要加一个反斜杠呢?

热点排行
Bad Request.