OpenGL透视投影来映射屏幕像素
OpenGL perspective projection to map the screen pixels
我正试图在OpenGL中设置透视投影,使其精确映射到屏幕像素,就像我们在正交投影中所做的那样。我可以对特定的屏幕大小(例如640x960)执行此操作,但不能对任何屏幕大小执行此操作。下面是我用来设置640x960尺寸的代码
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
Matrix4f perspective( Matrix4f::perspective( 60.0f, ( size.width / size.height ), 0.5f, 1500.f ) );
Matrix4f lookAt( Matrix4f::lookAt( size.width / 2.0f, size.height / 2.0f, size.height / 1.1566f, size.width / 2.0f, size.height / 2.0f, 0.0f, 0.0f, 1.0f, 0.0f ) );
Matrix4f m( ( perspective * lookAt ).translate( -( size.width / 2.0f ), -( size.height / 2.0f ), -( size.height/ 1.1566f ) ) );
glLoadMatrixf( m.get() );
这适用于640x960分辨率,但不适用于任何其他类似1024x768的分辨率。在其他分辨率中,它并不完全映射到屏幕像素。
我想设置透视投影,因为我也想提供沿着x和y轴旋转精灵的能力。
我正在尝试在OpenGL中设置透视投影,使其精确地映射到屏幕像素
从本质上讲,这种映射只适用于一个特定的深度。对于所有其他视图,它根本无法将视图X、Y映射到视口X、Y
我想设置透视投影,因为我也想提供沿着x和y轴旋转精灵的能力
没有什么能阻止你用正交投影来做这件事。
似乎问题出在乘法顺序上。上面的代码现在适用于任何分辨率。
相关文章:
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何将CMSampleBufferRef/CIImage/UIImage转换为像素,例如uint8_t[]
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 如何在屏幕周围生成随机像素
- 带有屏幕像素的 glReadPixel 像素
- 如何使用Qt读取我的应用程序屏幕像素数据
- 从屏幕 HDC 保存像素
- 如何使对准对象自动筛选为屏幕,以便于像素网格
- OpenGL使用glfw通过HIDDEN窗口进行屏幕外渲染和读取像素值
- OpenGL ES坐标到屏幕像素
- 在屏幕上绘制一个像素
- 如何在 OpenGL 中查找屏幕上给定像素的相应基元或顶点
- OpenGL透视投影来映射屏幕像素
- 如何在 x11 中获取屏幕像素的颜色
- OSX以最小的延迟将像素推到屏幕上
- 像素图屏幕截图转换为低质量