- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
gluProject
函数 (OpenGL) 有问题。我想将一个简单的 3D 点从对象空间转换到屏幕空间。我的代码如下:
int main(){
GLdouble mvmatrix[16];
GLdouble projmatrix[16];
GLint viewport[4];
GLdouble winx;
GLdouble winy;
GLdouble winz;
glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix);
glGetDoublev(GL_PROJECTION_MATRIX, projmatrix);
glGetIntegerv(GL_VIEWPORT, viewport);
gluProject(0.0, 0.0, 0.0, mvmatrix, projmatrix, viewport, &winx, &winy, &winz);
std::cout << winx << winy;
getchar();
getchar();
return 0;
}
输出是:
-1.71799e+009 -1.71799e+009
这是一个奇怪的结果,对我来说没有意义。有谁知道出了什么问题?我没有在网上找到任何东西。
最佳答案
Does anyone know what went wrong?
您还没有创建 GL context并在使用 glGetDoublev()
和 glGetIntegerv()
之前使其成为当前版本:
In order for any OpenGL commands to work, a context must be current; all OpenGL commands affect the state of whichever context is current. The current context is a thread-local variable, so a single process can have several threads, each of which has its own current context. However, a single context cannot be current in multiple threads at the same time.
您可以使用 ( Free ) GLUT (在 other things (not exhaustive) 中)创建一个窗口和关联的 GL 上下文:
#include <GL/glut.h>
#include <iostream>
int main(int argc, char **argv)
{
// create context & make it current
glutInit( &argc, argv );
glutInitWindowSize( 200, 200 );
glutInitDisplayMode( GLUT_RGBA );
glutCreateWindow( "GLUT" );
GLdouble mvmatrix[16];
GLdouble projmatrix[16];
GLint viewport[4];
GLdouble winx;
GLdouble winy;
GLdouble winz;
glGetDoublev( GL_MODELVIEW_MATRIX, mvmatrix );
glGetDoublev( GL_PROJECTION_MATRIX, projmatrix );
glGetIntegerv( GL_VIEWPORT, viewport );
gluProject
(
0.0, 0.0, 0.0,
mvmatrix, projmatrix, viewport,
&winx, &winy, &winz
);
std::cout << winx << " " << winy << std::endl;
return 0;
}
输出:
100 100
关于c++ - gluProject() 的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33233195/
我正在尝试在我的游戏中使用 gluProject。我找到了一种使用它的方法,但我不知道如何处理旋转。 这是我编写的代码: public static Vector2 getScreenCoordina
我想使用 gluProject函数,在“渲染”后获取二维窗口中的点坐标。问题是,我得到了奇怪的结果。例如:我有一个 x=16.5 的点。当我使用 gluProject在它上面我得到 x= -6200.
gluProject 函数 (OpenGL) 有问题。我想将一个简单的 3D 点从对象空间转换到屏幕空间。我的代码如下: int main(){ GLdouble mvmatrix[16];
OpenGL documentation对于 gluProject 写道,点 v 的投影是使用给定的投影和模型 View 矩阵通过 v'' = P * M * v 然后使用当前视口(viewport)
我已经为此苦苦挣扎了一段时间了。我正在尝试使用 devKitPro 确定 NDS 屏幕上模型中顶点的屏幕坐标。该库似乎实现了 OpenGL 的一些功能,但特别是缺少 gluProject 函数,这(我
我需要显示一个占屏幕宽度 100% 的正方形多边形,然后,我想我必须缩放它(使用 Z 轴)直到多边形边界触及屏幕边界。 我正在尝试使用 gluProject 将 3D 坐标投影到 2D 屏幕坐标中来实
我想在使用 gluProject() 从 3D 点计算出的 2D 点显示 2D 图像。所以我有我的 3D 点,我使用 gluProject 获取它的 2D 坐标,然后我在这个点上显示我的图像。它运行良
我正在寻找 javascript 中 gluProject 的等效项,以便与 WebGL 一起使用。有谁知道开源实现在哪里或者如何用 javascript 实现它? 我正在使用这里的 glMatrix
我正在尝试从 opengl 坐标(投影在 3D 空间中)找到屏幕坐标,为此我使用了 glproject 调用,我在代码中使用了旋转和平移 在执行一些转换后的某个时刻,我调用 glproject api
我不知道为什么 wiki of opengl.org在标题中说“gluProject”,但在代码中是“glhProject”。有什么区别吗? 最佳答案 它使用 glh 因为编写该 Wiki 页面的人编
所以我使用 gluProject 获取 3D 坐标并告诉我它们在屏幕上渲染的位置。问题是我没有得到与 gluProject 相同的坐标以及它们实际最终渲染的位置。奇怪的是,如果相机的 x、y 和 z
我正在尝试将 3D 坐标转换为 2D 坐标。我知道我需要使用 gluProject()。但是我在设置它时遇到了麻烦。我需要使用像素坐标 我在 InitGL() 方面需要帮助,我该如何正确初始化它。还有
经过两个小时的谷歌搜索( here 、 here 、 here 、 here 和 here 以及一大堆我懒得去找的其他东西),我以为我终于学会了将 3D 坐标转换为 2D 坐标的理论。但它不起作用。这
我是一名优秀的程序员,十分优秀!