opengl实现实时图像旋转 使用opengl将摄像机采集回来的图像进行实时旋转,视见区是旋转的,可是视见区里面的图像不是随着视见区的旋转而旋转,而是随着摄像头的旋转而旋转,我的程序是先更新纹理图,再计算摄像机的旋转角度,之后再根据旋转角度贴图,这是哪的问题呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在主函数中我是这么写的:UpdateTexture();Draw(); 其中void UpdateTexture(){ ConvertBayer2Rgb(m_pImageBuffer,m_pRawBuffer,Width,Height,ConvertType,m_pLutR,m_pLutG,m_pLutB,true,Layout);DrawDibDraw (hdd, hdc, 0, 0, 1024, 768, &(m_pBmpInfo->bmiHeader), m_pImageBuffer, 0, 0, Width, Height, 0);glBindTexture(GL_TEXTURE_2D, texture[0]);glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, 1024, 768, GL_BGR_EXT, GL_UNSIGNED_BYTE, data);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);}data中存放图像数据void Draw (void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 768, 0, GL_RGB, GL_UNSIGNED_BYTE, data); glRotatef(angleZ,0.0f,0.0f,-1.0f); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(-512.0f, -384.0f, -1.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 512.0f, -384.0f, -1.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( 512.0f, 384.0f, -1.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-512.0f, 384.0f, -1.0f); glEnd(); glFlush ();}调试发现视见区是旋转angleZ角度,可是里面的图像与摄像机所采集到的图像一样,并没有被纠正angleZ角度,请问这是哪的问题呢?急求高手指点 一、glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 768, 0, GL_RGB, GL_UNSIGNED_BYTE, data);纹理的生成你写到绘制函数里面?二、glRotatef(angleZ,0.0f,0.0f,-1.0f);//绕Z轴旋转就写1.0f怎么变-1了?三、在使用旋转、平移、缩放时,前后得压栈,用:glPushMatrix();//..做旋转等操作glPopMatrix();太多问题了.. 给初学者发布一个好界面的源码! Grid列锁定的问题,急~~~~ ListBox外观以及里面数据的间距,行距怎么设置? 有什么好的网络监视工具. CString类型问题,怪怪! 求救:怎样定义一个指向父对话框的指针? 图像数据和bmp文件中的图像数据之间是什么关系? 怎样给浏览器发送刷新消息。 将mfc代码改变成c++控制台的代码,麻烦看看 求指导,关于类的 请教一个有点怪异的问题 关于图像里的数字提取
UpdateTexture();
Draw();
其中
void UpdateTexture()
{ ConvertBayer2Rgb(m_pImageBuffer,m_pRawBuffer,Width,Height,ConvertType,m_pLutR,m_pLutG,m_pLutB,true,Layout);
DrawDibDraw (hdd, hdc, 0, 0, 1024, 768, &(m_pBmpInfo->bmiHeader), m_pImageBuffer, 0, 0, Width, Height, 0);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexSubImage2D (GL_TEXTURE_2D, 0, 0, 0, 1024, 768, GL_BGR_EXT, GL_UNSIGNED_BYTE, data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}
data中存放图像数据
void Draw (void)
{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 768, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
glRotatef(angleZ,0.0f,0.0f,-1.0f);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-512.0f, -384.0f, -1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 512.0f, -384.0f, -1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 512.0f, 384.0f, -1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-512.0f, 384.0f, -1.0f);
glEnd();
glFlush ();
}
调试发现视见区是旋转angleZ角度,可是里面的图像与摄像机所采集到的图像一样,并没有被纠正angleZ角度,请问这是哪的问题呢?急求高手指点
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 768, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
纹理的生成你写到绘制函数里面?二、
glRotatef(angleZ,0.0f,0.0f,-1.0f);//绕Z轴旋转就写1.0f怎么变-1了?三、
在使用旋转、平移、缩放时,前后得压栈,用:
glPushMatrix();
//..做旋转等操作
glPopMatrix();太多问题了..