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

pixel format with necessary capabilities not found解决方法

2012-05-22 
pixel format with necessary capabilities not found本人正在学习OpenGL,运行书中6.2节的程序6-5,即aaind

pixel format with necessary capabilities not found
本人正在学习OpenGL,运行书中6.2节的程序6-5,即aaindex.c时出现了下面的错误:
pixel format with necessary capabilities not found

源程序如下:

#include<GL/glew.h>
#include <GL/glut.h>
#include <stdlib.h>

#define RAMPSIZE 16
#define RAMP1START 32
#define RAMP2START 48

static float rotAngle = 0.;

/* Initialize antialiasing for color index mode,
 * including loading a green color ramp starting
 * at RAMP1START, and a blue color ramp starting
 * at RAMP2START. The ramps must be a multiple of 16.
 */
void init(void)
{
  int i;
  GLenum err=glewInit();
  if(GLEW_OK!=err)
  {
printf("Error!");
  }

  for (i = 0; i < RAMPSIZE; i++) {
  GLfloat shade;
  shade = (GLfloat) i/(GLfloat) RAMPSIZE;
  glutSetColor(RAMP1START+(GLint)i, 0., shade, 0.);
  glutSetColor(RAMP2START+(GLint)i, 0., 0., shade);
  }

  glEnable (GL_LINE_SMOOTH);
  glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
  glLineWidth (1.5);

  glClearIndex ((GLfloat) RAMP1START);
}

/* Draw 2 diagonal lines to form an X
 */
void display(void)
{
  glClear(GL_COLOR_BUFFER_BIT);

  glIndexi(RAMP1START);
  glPushMatrix();
  glRotatef(-rotAngle, 0.0, 0.0, 0.1);
  glBegin (GL_LINES);
  glVertex2f (-0.5, 0.5);
  glVertex2f (0.5, -0.5);
  glEnd ();
  glPopMatrix();

  glIndexi(RAMP2START);
  glPushMatrix();
  glRotatef(rotAngle, 0.0, 0.0, 0.1);
  glBegin (GL_LINES);
  glVertex2f (0.5, 0.5);
  glVertex2f (-0.5, -0.5);
  glEnd ();
  glPopMatrix();

  glFlush();
}

void reshape(int w, int h)
{
  glViewport(0, 0, (GLsizei) w, (GLsizei) h);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  if (w <= h) 
  gluOrtho2D (-1.0, 1.0, 
  -1.0*(GLfloat)h/(GLfloat)w, 1.0*(GLfloat)h/(GLfloat)w);
  else 
  gluOrtho2D (-1.0*(GLfloat)w/(GLfloat)h, 
  1.0*(GLfloat)w/(GLfloat)h, -1.0, 1.0);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
}

void keyboard(unsigned char key, int x, int y)
{
  switch (key) {
  case 'r':
  case 'R':
  rotAngle += 20.;
  if (rotAngle >= 360.) rotAngle = 0.;
  glutPostRedisplay();
  break;
  case 27: /* Escape Key */
  exit(0);
  break;
  default:
  break;
  }
}

/* Main Loop
 * Open window with initial window size, title bar, 
 * color index display mode, and handle input events.
 */
int main(int argc, char** argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode (GLUT_SINGLE | GLUT_INDEX);
  glutInitWindowSize (200, 200);
  glutCreateWindow (argv[0]);
  init();
  glutReshapeFunc (reshape);
  glutKeyboardFunc (keyboard);
  glutDisplayFunc (display);
  glutMainLoop();
  return 0;
}
望高手指点迷津。本人将万分感激!

[解决办法]
可能是你的显卡不支持GLUT_INDEX.

热点排行