我在opengl空间中画了一些三维的直线和圆盘的图形,然后用双缓存做成动画的形式。
现在我想获得这些图形二维屏幕坐标,包括屏幕上每个象素点坐标和颜色信息的获取。
我用glReadBuffer(GL_FRONT)和glReadPixel(x,y,width,height,GL_RGB,GL_GL_UNSIGNED_BYTE),但总是无法运行。
我用上面的方法对二维图形做同样的处理,但是读出来的颜色信息没有变化.
请问是什么原因,怎么解决?
现在我想获得这些图形二维屏幕坐标,包括屏幕上每个象素点坐标和颜色信息的获取。
我用glReadBuffer(GL_FRONT)和glReadPixel(x,y,width,height,GL_RGB,GL_GL_UNSIGNED_BYTE),但总是无法运行。
我用上面的方法对二维图形做同样的处理,但是读出来的颜色信息没有变化.
请问是什么原因,怎么解决?
{
glClear(GL_COLOR_BUFFER_BIT);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glColor3f(1,0,0);
glPushMatrix();
for(int i=0;i<5;i++)//每一帧所画的图形
{
glBegin(GL_LINE_STRIP);
glVertex2f(wingCoor[number][i][0][0],wingCoor[number][i][0][1]);
glVertex2f(wingCoor[number][i][1][0],wingCoor[number][i][1][1]);
glVertex2f(wingCoor[number][i][2][0],wingCoor[number][i][2][1]);
glVertex2f(wingCoor[number][i][3][0],wingCoor[number][i][3][1]);
glVertex2f(wingCoor[number][i][4][0],wingCoor[number][i][4][1]);
glEnd();
}
glPopMatrix();
SwapBuffers(::wglGetCurrentDC());
}
void CImageDlg::OnTimer(UINT nIDEvent) //实现动画效果
{
if (number<100)
{
OnReDrawOpengl();
imageValue();
}
else
{
mFrame=100;
number=0;
}
number+=1;//帧数
CDialog::OnTimer(nIDEvent);
}
void CImageDlg::imageValue()//¶ÁÈ¡ÏñËØÖµ
{
BYTE image[480][640][3];//视口的宽为640,高为480
glReadBuffer(GL_FRONT);//
glReadPixels(0,0,640,480,GL_RGB,GL_UNSIGNED_BYTE,image);
ofstream out("data2.txt");
for(int i=0;i<480;i++)
{
for(int j=0;j<640;j++)
{
out<<image[i][j][0]<<" ";
}
}
}
以上是我的部分代码,请问流程有问题吗?
最后的输出值都为255
msdn上也没有
wglmakecurrent函数。
不行呀
查了半天资料,还是不知道怎么用阿
再帮帮我吧