我要发帖 回复

中级会员

35

主题

519

积分

0

专家分

:

私信
发表时间 : 2007-11-15 21:49:04 | 浏览 : 1803    评论 : 7
请问有谁知道下面问题是怎么造成的:
红宝书的示例程序中涉及颜色索引模式下的种种处理像抗锯齿和雾,程序看似没有问题,但是运行看不到结果
未命名.jpg

最近VR访客

tan_dunming 评论于2007-11-15 22:58:14
显卡不支持还是功能没有开启?
鹤舞流云 评论于2007-11-16 11:35:31

程序如下

下面是程序,我的显卡是NVDIA GeForce的,麻烦给看看
#include <GL/glut.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>

#define NUMCOLORS 32
#define RAMPSTART 16

static void init(void)
{
   int i;

   glEnable(GL_DEPTH_TEST);

   for (i = 0; i < NUMCOLORS; i++) {
      GLfloat shade;
      shade = (GLfloat) (NUMCOLORS-i)/(GLfloat) NUMCOLORS;
      glutSetColor (RAMPSTART + i, shade, shade, shade);
   }
   glEnable(GL_FOG);

   glFogi (GL_FOG_MODE, GL_LINEAR);
   glFogi (GL_FOG_INDEX, NUMCOLORS);
   glFogf (GL_FOG_START, 1.0);
   glFogf (GL_FOG_END, 6.0);
   glHint (GL_FOG_HINT, GL_NICEST);
   glClearIndex((GLfloat) (NUMCOLORS+RAMPSTART-1));
}

static void renderSphere (GLfloat x, GLfloat y, GLfloat z)
{
   glPushMatrix();
   glTranslatef (x, y, z);
   glutWireSphere(0.4, 16, 16);
   glPopMatrix();
}

void display(void)
{
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   glIndexi (RAMPSTART);

   renderSphere (-2., -0.5, -1.0);
   renderSphere (-1., -0.5, -2.0);
   renderSphere (0., -0.5, -3.0);
   renderSphere (1., -0.5, -4.0);
   renderSphere (2., -0.5, -5.0);

   glFlush();
}

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

void keyboard(unsigned char key, int x, int y)
{

   switch (key) {
      case 27:
         exit(0);
   }
}


int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_SINGLE | GLUT_INDEX | GLUT_DEPTH);
   glutInitWindowSize(500, 500);
   glutCreateWindow(argv[0]);
   init();
   glutReshapeFunc (reshape);
   glutKeyboardFunc (keyboard);
   glutDisplayFunc (display);
   glutMainLoop();
   return 0;
}
tan_dunming 评论于2007-11-16 19:07:50
我的电脑运行也不可以,但是把
glutInitDisplayMode (GLUT_SINGLE | GLUT_INDEX | GLUT_DEPTH);
改为
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
就OK了,算了颜色索引也不怎么常用,那还是RGBA吧,哈哈。)
追求卓越
鹤舞流云 评论于2007-11-16 20:55:31
哦,改了试了一下,时看到图形了,但是这是由什么引起的呢?
tan_dunming 评论于2007-11-18 21:40:00
会不会是是显卡驱动或者显卡本身支持的问题了?
我以前做一个立体的程序时也有类似的输出。
追求卓越
isoliyang 评论于2007-12-18 10:43:31
我的也是阿,是不是显卡需要特别的设置?
tan_dunming 评论于2007-12-22 19:58:35
立体显示的话要求显卡首先支持立体 其次好要正确安装了驱动以及立体驱动。
比如我的Nividia FX 1300的驱动
nvidia_fw7801whql_xp.exe
78.01_3Dstereo.exe

[ 本帖最后由 tan_dunming 于 2007-12-22 08:00 PM 编辑 ]
追求卓越

手机版|VR开发网 统计 津ICP备18009691号
网安备12019202000257

GMT+8, 2021-4-21 12:14 PM

返回顶部