OpenGL的小疑点
OpenGL的小问题
刚学OpenGL,当使用多重采样和颜色索引的时候,就会出现这种情况,我也到网上查了下,无果!!特来请教各位大神啊,
这里附上代码和问题的描述,劳驾各位呢!!!
view sourceprint?001 #include<stdio.h>
002 #include<stdlib.h>
003 #include<GL/glew.h>
004 #include<GL/glut.h>
005
006
007 static int bgtoggle=1;
008
009 void Init()
010 {
011 GLint buf,sbuf;
012 int i,j;
013 glClearColor(0.0,0.0,0.0,0.0);
014 glGetIntegerv(GL_SAMPLE_BUFFERS,&buf);
015 printf("number of sample buffers is %d \n",buf);
016 glGetIntegerv(GL_SAMPLES,&sbuf);
017 printf("number of samples is %d \n",sbuf);
018
019 glNewList(1,GL_COMPILE);
020 for(i=0;i<19;i++){
021 glPushMatrix();
022 glRotatef(360.0*(float)i/19.0,0.0,0.0,1.0);
023 glColor3f(1.0,1.0,1.0);
024 glLineWidth((i/3)+1.0);
025 glBegin(GL_LINES);
026 glVertex2f(0.25,0.25);
027 glVertex2f(0.9,0.2);
028 glEnd();
029 glColor3f(0.0,1.0,1.0);
030 glBegin(GL_TRIANGLES);
031 glVertex2f(0.25,0.0);
032 glVertex2f(0.9,0.0);
033 glVertex2f(0.875,0.10);
034 glEnd();
035 glPopMatrix();
036 }
037 glEndList();
038
039 glNewList(2,GL_COMPILE);
040 glColor3f(1.0,0.5,0.0);
041 glBegin(GL_QUADS);
042 for(i=0;i<16;i++)
043 for(j=0;j<16;j++)
044 if((i+i)%2==0){
045 glVertex2f(-2.0+(i*0.25),-2.0+(j*0.25));
046 glVertex2f(-2.0+(i*0.25),-1.75+(j*0.25));
047 glVertex2f(-1.75+(i*0.25),-1.75+(j*0.25));
048 glVertex2f(-1.75+(i*0.25),-2.0+(j*0.25));
049 }
050 glEnd();
051 glEndList();
052
053 }
054
055 void display()
056 {
057 glClear(GL_COLOR_BUFFER_BIT);
058
059 if(bgtoggle)
060 glCallList(2);
061 glEnable(GL_MULTISAMPLE);
062 glPushMatrix();
063 glTranslatef(-1.0,0.0,0.0);
064 glCallList(1);
065 glPopMatrix();
066
067 glDisable(GL_MULTISAMPLE);
068 glPushMatrix();
069 glTranslatef(1.0,0.0,0.0);
070 glCallList(1);
071 glPopMatrix();
072 glutSwapBuffers();
073
074 }
075
076 void keyboard(unsigned char key,int x,int y)
077 {
078 switch(key){
079 case 'b':
080 bgtoggle=!bgtoggle;
081 glutPostRedisplay();
082 break;
083 case 27:
084 exit(0);
085 break;
086 default:
087 break;
088 }
089
090 }
091 void reshape(int w,int h)
092 {
093 glViewport(0,0,(GLsizei)w,(GLsizei)h);
094 glMatrixMode(GL_PROJECTION);
刚学OpenGL,当使用多重采样和颜色索引的时候,就会出现这种情况,我也到网上查了下,无果!!特来请教各位大神啊,
这里附上代码和问题的描述,劳驾各位呢!!!
view sourceprint?001 #include<stdio.h>
002 #include<stdlib.h>
003 #include<GL/glew.h>
004 #include<GL/glut.h>
005
006
007 static int bgtoggle=1;
008
009 void Init()
010 {
011 GLint buf,sbuf;
012 int i,j;
013 glClearColor(0.0,0.0,0.0,0.0);
014 glGetIntegerv(GL_SAMPLE_BUFFERS,&buf);
015 printf("number of sample buffers is %d \n",buf);
016 glGetIntegerv(GL_SAMPLES,&sbuf);
017 printf("number of samples is %d \n",sbuf);
018
019 glNewList(1,GL_COMPILE);
020 for(i=0;i<19;i++){
021 glPushMatrix();
022 glRotatef(360.0*(float)i/19.0,0.0,0.0,1.0);
023 glColor3f(1.0,1.0,1.0);
024 glLineWidth((i/3)+1.0);
025 glBegin(GL_LINES);
026 glVertex2f(0.25,0.25);
027 glVertex2f(0.9,0.2);
028 glEnd();
029 glColor3f(0.0,1.0,1.0);
030 glBegin(GL_TRIANGLES);
031 glVertex2f(0.25,0.0);
032 glVertex2f(0.9,0.0);
033 glVertex2f(0.875,0.10);
034 glEnd();
035 glPopMatrix();
036 }
037 glEndList();
038
039 glNewList(2,GL_COMPILE);
040 glColor3f(1.0,0.5,0.0);
041 glBegin(GL_QUADS);
042 for(i=0;i<16;i++)
043 for(j=0;j<16;j++)
044 if((i+i)%2==0){
045 glVertex2f(-2.0+(i*0.25),-2.0+(j*0.25));
046 glVertex2f(-2.0+(i*0.25),-1.75+(j*0.25));
047 glVertex2f(-1.75+(i*0.25),-1.75+(j*0.25));
048 glVertex2f(-1.75+(i*0.25),-2.0+(j*0.25));
049 }
050 glEnd();
051 glEndList();
052
053 }
054
055 void display()
056 {
057 glClear(GL_COLOR_BUFFER_BIT);
058
059 if(bgtoggle)
060 glCallList(2);
061 glEnable(GL_MULTISAMPLE);
062 glPushMatrix();
063 glTranslatef(-1.0,0.0,0.0);
064 glCallList(1);
065 glPopMatrix();
066
067 glDisable(GL_MULTISAMPLE);
068 glPushMatrix();
069 glTranslatef(1.0,0.0,0.0);
070 glCallList(1);
071 glPopMatrix();
072 glutSwapBuffers();
073
074 }
075
076 void keyboard(unsigned char key,int x,int y)
077 {
078 switch(key){
079 case 'b':
080 bgtoggle=!bgtoggle;
081 glutPostRedisplay();
082 break;
083 case 27:
084 exit(0);
085 break;
086 default:
087 break;
088 }
089
090 }
091 void reshape(int w,int h)
092 {
093 glViewport(0,0,(GLsizei)w,(GLsizei)h);
094 glMatrixMode(GL_PROJECTION);