首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >旋转纹理openGL c++

旋转纹理openGL c++
EN

Stack Overflow用户
提问于 2013-12-19 19:49:28
回答 2查看 1.2K关注 0票数 1

当我用openCV图像做纹理时,它总是在180上旋转,这是为什么?这是我的代码,它绑定纹理并显示在屏幕上。如果代码规范,建议我如何正确旋转纹理,我无法得到它。

代码语言:javascript
运行
复制
glBindTexture( GL_TEXTURE_2D, slice.texture);
glLoadIdentity();
glEnable(GL_TEXTURE_2D); //enable 2D texturing

glBegin (GL_QUADS);

float nullX = slObj->rect.x/400.0;
float nullY = slObj->rect.y/300.0;

float sliceWidth = slObj->rect.width/400.0;
float sliceHeight = slObj->rect.height/300.0;

//with our vertices we have to assign a texcoord
//so that our texture has some points to draw to
glTexCoord2d(0.0,0.0); glVertex2f(nullX, nullY);
glTexCoord2d(1.0,0.0); glVertex2f(nullX + sliceWidth, nullY);
glTexCoord2d(1.0,1.0); glVertex2f(nullX + sliceWidth, nullY + sliceHeight);
glTexCoord2d(0.0,1.0); glVertex2f(nullX, nullY + sliceHeight);
glEnd();
glFlush();

更新:

代码语言:javascript
运行
复制
// initialize
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
glutInitWindowSize(screenWidth, screenHeight);
glClearColor(0.3,0.3,0.3,0.0);
glMatrixMode(GL_PROJECTION); 
glOrtho(-400.0 ,400.0 ,-300.0 ,300.0 ,0 ,1.0); 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-19 21:48:38

你的投影矩阵是如何建立的?

这些坐标是正确的,假设你有一个传统的投影矩阵,其中Y轴从底部到屏幕顶部增加。另一方面,如果您颠倒了投影矩阵,使(0,0)实际上是屏幕左上角,那么您就有问题了。

如果是这种情况,则纹理不是真正旋转的,而是镜像的。没有旋转可以产生这样的情况,这就是所谓的手性(也称手)的变化。您可以使用传统的投影矩阵,其中Y轴的行为如前所述,或补偿当你计算你的纹理坐标,翻转第二个纹理坐标(T)。

票数 1
EN

Stack Overflow用户

发布于 2013-12-19 22:27:52

当我使用openCV来加载和切片图像时,我只是翻转图像。

代码语言:javascript
运行
复制
IplImage *source = cvLoadImage("space.png",1);
if(source == NULL) source = cvLoadImage("C://space.png",1);

cvFlip(source, source, 0);

谢谢大家的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20690427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档