opengl读取像素的颜色值不对
#include<GL/gl.h>#include<GL/glut.h>#include<GL/glu.h>#include<iostream>#include"stac...
#include <GL/gl.h>
#include <GL/glut.h>
#include <GL/glu.h>
#include <iostream>
#include "stack.h"
#define FILL_COLOR 100
#define BORDER_COLOR 255
using namespace std;
void DrawRegion();
void myInit(void);
void myDisplay(void);
void RegionFill(void);
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 150);
glutCreateWindow("my first attempt");
myInit();
glutDisplayFunc(myDisplay);
//glutReshapeFunc(myReshape);
//glutMouseFunc(myMouse);
//glutKeyboardFunc(myKeyboard);
glutMainLoop();
return 0;
}
void myInit(void)
{
glClearColor(1.0, 1.0, 1.0, 1.0);
glPointSize(1.0);//设置点的大小为一个像素
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
DrawRegion();
//RegionFill();
glFlush();
}
void DrawRegion(void)
{
glColor3ub(0, 0, 0);
glBegin(GL_LINE_LOOP);
glVertex2i(50, 50);
glVertex2i(180, 300);
glVertex2i(300, 200);
glVertex2i(450, 320);
glVertex2i(350, 80);
glVertex2i(250, 150);
glVertex2i(150, 150);
glVertex2i(50, 50);
glEnd();
glFlush();
GLubyte Pixel;
glReadPixels(50 , 50, 1, 1, GL_RED, GL_UNSIGNED_BYTE, &Pixel);
cout < < int(Pixel) < < " ";
}
用gdb调试的时候输出255,终端的时候有时候是255,有时候会输出两个值,0 255,
我觉得正确的不是应该0么,我在上面画线了阿,还有怎么会输出两个值呢?
现在不管终端的执行了,gdb调试没错,我就继续下一步了,我在RegionFill()函数内再次,可是读出的值就不对了,是118
void RegionFill(void)
{
GLubyte Pixel;
glReadPixels(50, 50, 1, 1, GL_RED, GL_UNSIGNED_BYTE, &Pixel);//读取一点的红色通道值 展开
#include <GL/glut.h>
#include <GL/glu.h>
#include <iostream>
#include "stack.h"
#define FILL_COLOR 100
#define BORDER_COLOR 255
using namespace std;
void DrawRegion();
void myInit(void);
void myDisplay(void);
void RegionFill(void);
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(100, 150);
glutCreateWindow("my first attempt");
myInit();
glutDisplayFunc(myDisplay);
//glutReshapeFunc(myReshape);
//glutMouseFunc(myMouse);
//glutKeyboardFunc(myKeyboard);
glutMainLoop();
return 0;
}
void myInit(void)
{
glClearColor(1.0, 1.0, 1.0, 1.0);
glPointSize(1.0);//设置点的大小为一个像素
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, 640.0, 0.0, 480.0);
}
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
DrawRegion();
//RegionFill();
glFlush();
}
void DrawRegion(void)
{
glColor3ub(0, 0, 0);
glBegin(GL_LINE_LOOP);
glVertex2i(50, 50);
glVertex2i(180, 300);
glVertex2i(300, 200);
glVertex2i(450, 320);
glVertex2i(350, 80);
glVertex2i(250, 150);
glVertex2i(150, 150);
glVertex2i(50, 50);
glEnd();
glFlush();
GLubyte Pixel;
glReadPixels(50 , 50, 1, 1, GL_RED, GL_UNSIGNED_BYTE, &Pixel);
cout < < int(Pixel) < < " ";
}
用gdb调试的时候输出255,终端的时候有时候是255,有时候会输出两个值,0 255,
我觉得正确的不是应该0么,我在上面画线了阿,还有怎么会输出两个值呢?
现在不管终端的执行了,gdb调试没错,我就继续下一步了,我在RegionFill()函数内再次,可是读出的值就不对了,是118
void RegionFill(void)
{
GLubyte Pixel;
glReadPixels(50, 50, 1, 1, GL_RED, GL_UNSIGNED_BYTE, &Pixel);//读取一点的红色通道值 展开
2008-12-09
展开全部
还是我……之前回你的那个
结果是0~~~这才是正确的
因为在RGB中……RGB(0,0,0)表示的是黑色
如果是输出255的话有可能取错了吧……不过可能性应该不大……我运行了十几次,输出结果全部是0哦,全部正确……
====================================
跟编译关系应该不大吧……我们估计用的是同一套GLUT库
结果是0~~~这才是正确的
因为在RGB中……RGB(0,0,0)表示的是黑色
如果是输出255的话有可能取错了吧……不过可能性应该不大……我运行了十几次,输出结果全部是0哦,全部正确……
====================================
跟编译关系应该不大吧……我们估计用的是同一套GLUT库
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询