OPENGL获得点的深度信息
glPushMatrix();
glGetIntegerv(GL_VIEWPORT, iViewPort); //获得视口
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(m_fCameraX, m_fCameraY, m_fCameraZ, m_fFocusX, m_fFocusY, m_fFocusZ, m_fUpX, m_fUpY, m_fUpZ); //设置摄像机坐标及方向
glGetDoublev(GL_MODELVIEW_MATRIX,dModelMatrix );
glGetDoublev(GL_PROJECTION_MATRIX,dProjMatrix);
glGetDoublev(GL_DEPTH_RANGE,depth);
GLdouble viewX,viewY,viewZ;
pointx=point.x;
pointy=point.y;
winX = (float)pointx;
winY = (float)iViewPort[3] - (float)pointy;
GLdouble ceshx,ceshy,ceshz,cesht;
GLdouble x,y,z;
GLdouble fdepth;
gluProject(0.5,0.5,0.01,dModelMatrix,dProjMatrix,iViewPort,&x,&y,&z);
glReadPixels(winX,winY,2,2,GL_DEPTH_COMPONENT,GL_FLOAT,&fdepth);
gluUnProject(winX,winY,fdepth,dModelMatrix,dProjMatrix,iViewPort,&ceshx,&ceshy,&ceshz);
为什么我用gluUnProject得到的世界坐标点不正确呢,我用(0.5,0.5 0.01)测试了gluProject函数是正确的,而且glReadPixels读取的深度值总是0.0078,请高手请教这是什么原因呢?
glGetIntegerv(GL_VIEWPORT, iViewPort); //获得视口
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(m_fCameraX, m_fCameraY, m_fCameraZ, m_fFocusX, m_fFocusY, m_fFocusZ, m_fUpX, m_fUpY, m_fUpZ); //设置摄像机坐标及方向
glGetDoublev(GL_MODELVIEW_MATRIX,dModelMatrix );
glGetDoublev(GL_PROJECTION_MATRIX,dProjMatrix);
glGetDoublev(GL_DEPTH_RANGE,depth);
GLdouble viewX,viewY,viewZ;
pointx=point.x;
pointy=point.y;
winX = (float)pointx;
winY = (float)iViewPort[3] - (float)pointy;
GLdouble ceshx,ceshy,ceshz,cesht;
GLdouble x,y,z;
GLdouble fdepth;
gluProject(0.5,0.5,0.01,dModelMatrix,dProjMatrix,iViewPort,&x,&y,&z);
glReadPixels(winX,winY,2,2,GL_DEPTH_COMPONENT,GL_FLOAT,&fdepth);
gluUnProject(winX,winY,fdepth,dModelMatrix,dProjMatrix,iViewPort,&ceshx,&ceshy,&ceshz);
为什么我用gluUnProject得到的世界坐标点不正确呢,我用(0.5,0.5 0.01)测试了gluProject函数是正确的,而且glReadPixels读取的深度值总是0.0078,请高手请教这是什么原因呢?
...全文
相关推荐
OpenGL实现屏幕空间环境光遮蔽(Screen-Space Ambient Occlusion, SSAO)
然后,利用这些信息在屏幕空间内随机采样周围的点,基于这些点的深度信息和当前点的深度差来判断遮蔽程度。为了增加效果的自然性,往往会使用一些噪声纹理来打乱采样点的位置,避免产生重复的图案。
mfc+opengl离散点绘制曲面
本文将详细介绍如何使用MFC和OpenGL来根据离散点数据绘制曲面。首先,理解离散点数据是关键。离散点数据是指在空间中的不连续坐标点,这些点可能来自于测量、模拟或其他数据采集过程。
OpenGL画二维图形,点的介绍
OpenGL 画二维图形,点的介绍OpenGL 是一个功能强大的三维图形函数库,用于创建交互式三维图形应用程序。下面是关于 OpenGL 画二维图形,点的介绍的知识点:1.
基于OpenGL实现三维散乱点集的Delaunay三角剖分
### 基于OpenGL实现三维散乱点集的Delaunay三角剖分#### 概述本文探讨了如何利用OpenGL(开放图形库)来实现三维散乱点集的Delaunay三角剖分,并重点介绍了该技术在将离散点可视化中的应用价值
基于OpenGL的描点绘制Bezier曲线
本项目是关于使用OpenGL实现描点绘制Bezier曲线,这是一项基础但重要的计算机图形学技术。


工具平台和程序库
