c – OpenGL位图程序只显示白色,黑色和黄色?
发布时间:2020-12-16 07:14:02 所属栏目:百科 来源:网络整理
导读:我在 http://partow.net/programming/bitmap/index.html和OpenGL上使用库来创建一个在我的屏幕上加载位图的功能.图像加载但只显示黑色,白色和黄色.我在Windows 7上使用Dev C.这是我的代码: void Load_Image(HDC hDC,string File_Name,int x_position,int y_
我在
http://partow.net/programming/bitmap/index.html和OpenGL上使用库来创建一个在我的屏幕上加载位图的功能.图像加载但只显示黑色,白色和黄色.我在Windows 7上使用Dev C.这是我的代码:
void Load_Image(HDC hDC,string File_Name,int x_position,int y_position,int length,int height) { bitmap_image image(File_Name); // Open the bitmap unsigned char red; unsigned char green; unsigned char blue; restart: image.get_pixel(x_position,y_position,red,green,blue); // Get the red green and blue from x_position and y_position and store it in red green and blue. glBegin (GL_TRIANGLES); // Make a pixel at x_position and y_position with red green and blue. glColor3f (red,blue); glVertex2f (-1 + 0.0015 * x_position,1 - 0.003 * y_position); glVertex2f (-1 + 0.0015 * x_position,0.997 - 0.003 * y_position); glVertex2f (-0.9985 + 0.0015 * x_position,1 - 0.003 * y_position); glEnd(); glBegin (GL_TRIANGLES); glColor3f (red,1 - 0.003 * y_position); glVertex2f (-0.9985 + 0.0015 * x_position,0.997 - 0.003 * y_position); glEnd(); if (x_position==length) // If x_position equals to length of bmp set x_position to 0 and add 1 to y_position. { if (y_position==height) // If bmp is done loading go to done. { goto done; } x_position = 0; y_position = y_position + 1; } x_position = x_position + 1; goto restart; done: SwapBuffers(hDC); // Put it on the screen. } 关于什么是错的任何想法? 解决方法
红色,绿色,蓝色的颜色值为unsigned char类型,范围为0..255. glColor的浮点变量glColor3f但是要求输入值在0..1范围内.尝试使用glColor3ub()代替.
更新:我的原始答案建议glColor3b()但它应该是无符号变量glColor3ub(). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |