- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 OpenGL 新手,仍在尝试基本形状。我有时会发现许多函数,例如 glEnd
等,OpenGL 3+ 文档中未提及这些函数。它们被其他功能取代了吗?或者我必须手动编写它们?是否有使用 OpenGL 3+ 的在线教程?
至于“gluPerspective”,我读到它在 Opengl 3+ 中没有使用。它不应该是 GLUT 中的一个单独的函数吗?它与 OpenGL 3+ 有什么关系?最后,Transform( Width, Height ); 是什么意思?做? (我在下载的一些示例代码中找到了它,但在 GLUT 或 OpenGL 中找不到它)。
这是代码:
GLvoid Transform(GLfloat Width, GLfloat Height)
{
glViewport(00, 00, Width, Height); /* Set the viewport */
glMatrixMode(GL_PROJECTION); /* Select the projection matrix */
glLoadIdentity(); /* Reset The Projection Matrix */
gluPerspective(20.0,Width/Height,0.1,100.0); /* Calculate The Aspect Ratio Of The Window */
glMatrixMode(GL_MODELVIEW); /* Switch back to the modelview matrix */
}
/* A general OpenGL initialization function. Sets all of the initial parameters. */
GLvoid InitGL(GLfloat Width, GLfloat Height)
{
glClearColor(0.0, 0.0, 0.0, 0.0); /* This Will Clear The Background Color To Black */
glLineWidth(2.0); /* Add line width, ditto */
Transform( Width, Height ); /* Perform the transformation */
}
/* The function called when our window is resized */
GLvoid ReSizeGLScene(GLint Width, GLint Height)
{
if (Height==0) Height=1; /* Sanity checks */
if (Width==0) Width=1;
Transform( Width, Height ); /* Perform the transformation */
}
最佳答案
I sometimes find many functions like glEnd and many more, that are not mentioned in the OpenGL 3+ documentation. Were they replaced by other functions?
它们已被完全删除,因为它们的工作方式不能很好地反射(reflect)现代图形系统在硬件和软件方面的工作方式。 glBegin(…) 和 glEnd() 形成了所谓的立即模式的环境:每次调用都会引发一个操作。这反射(reflect)了大约 20 年前早期图形系统的构建方式。
今天,我们准备一批数据,将它们传输到 GPU 内存,并通过一次绘图调用触发批量绘图。 OpenGL 通过顶点数组和顶点缓冲对象 (VBO) 来实现这一点。顶点数组自 OpenGL-1.1(1996)以来就已经存在,并且 VBO API 是建立在顶点数组之上的,因此对于任何合理的程序,都可以轻松添加 VBO 支持。
Or do I have to write them manually? Is there a tutorial online that uses OpenGL 3+?
这取决于相关功能。例如,整个纹理环境、组合器已被删除。就像矩阵操作功能和整个照明界面一样。
他们所做的和配置的现在是通过着色器和制服完成的。有人可能会说,既然您需要提供着色器,那么您就应该自己实现这一点。您很快就会发现,通常编写着色器比摆弄大量 OpenGL 参数设置调用更容易、更简洁。此外,一旦您取得了足够的进展,您就几乎不会错过矩阵操作函数。每个处理 3D 图形的严肃应用程序都会维护变换矩阵本身;无论是为了增强灵 active 还是仅仅因为其他地方也需要这些矩阵,例如一些物理模拟。
As for " gluPerspective" I have read that it isn't used in Opengl 3+. Isn't it supposed to be a separate function in GLUT? what does it has to do with OpenGL 3+? Last, what does Transform( Width, Height ); do? (I found it in some sample code I downloaded, and I can't find it in GLUT or OpenGL).
gluPerspective 是 GLU 的一部分。 GLU 是 OpenGL 实用函数的配套库,过去随 OpenGL-1.1 一起提供。然而它不是 OpenGL 规范的一部分并且完全可选。
过剩又是另一回事了。它是一个简单的框架,用于快速设置 OpenGL 窗口和上下文,并提供一些简约的输入 API。它也不再被积极维护。我个人建议不要使用它。如果必须使用 GLUT API,请使用 FreeGLUT。或者更好的是,根本不要过多,使用 Qt、GTK 等工具包或 GLFW 或 SDL 等框架。
关于OpenGL 已弃用的函数以及 gluPerspective 和 Transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7960398/
C语言sscanf()函数:从字符串中读取指定格式的数据 头文件: ?
最近,我有一个关于工作预评估的问题,即使查询了每个功能的工作原理,我也不知道如何解决。这是一个伪代码。 下面是一个名为foo()的函数,该函数将被传递一个值并返回一个值。如果将以下值传递给foo函数,
CStr 函数 返回表达式,该表达式已被转换为 String 子类型的 Variant。 CStr(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CSng 函数 返回表达式,该表达式已被转换为 Single 子类型的 Variant。 CSng(expression) expression 参数是任意有效的表达式。 说明 通常,可
CreateObject 函数 创建并返回对 Automation 对象的引用。 CreateObject(servername.typename [, location]) 参数 serv
Cos 函数 返回某个角的余弦值。 Cos(number) number 参数可以是任何将某个角表示为弧度的有效数值表达式。 说明 Cos 函数取某个角并返回直角三角形两边的比值。此比值是
CLng 函数 返回表达式,此表达式已被转换为 Long 子类型的 Variant。 CLng(expression) expression 参数是任意有效的表达式。 说明 通常,您可以使
CInt 函数 返回表达式,此表达式已被转换为 Integer 子类型的 Variant。 CInt(expression) expression 参数是任意有效的表达式。 说明 通常,可
Chr 函数 返回与指定的 ANSI 字符代码相对应的字符。 Chr(charcode) charcode 参数是可以标识字符的数字。 说明 从 0 到 31 的数字表示标准的不可打印的
CDbl 函数 返回表达式,此表达式已被转换为 Double 子类型的 Variant。 CDbl(expression) expression 参数是任意有效的表达式。 说明 通常,您可
CDate 函数 返回表达式,此表达式已被转换为 Date 子类型的 Variant。 CDate(date) date 参数是任意有效的日期表达式。 说明 IsDate 函数用于判断 d
CCur 函数 返回表达式,此表达式已被转换为 Currency 子类型的 Variant。 CCur(expression) expression 参数是任意有效的表达式。 说明 通常,
CByte 函数 返回表达式,此表达式已被转换为 Byte 子类型的 Variant。 CByte(expression) expression 参数是任意有效的表达式。 说明 通常,可以
CBool 函数 返回表达式,此表达式已转换为 Boolean 子类型的 Variant。 CBool(expression) expression 是任意有效的表达式。 说明 如果 ex
Atn 函数 返回数值的反正切值。 Atn(number) number 参数可以是任意有效的数值表达式。 说明 Atn 函数计算直角三角形两个边的比值 (number) 并返回对应角的弧
Asc 函数 返回与字符串的第一个字母对应的 ANSI 字符代码。 Asc(string) string 参数是任意有效的字符串表达式。如果 string 参数未包含字符,则将发生运行时错误。
Array 函数 返回包含数组的 Variant。 Array(arglist) arglist 参数是赋给包含在 Variant 中的数组元素的值的列表(用逗号分隔)。如果没有指定此参数,则
Abs 函数 返回数字的绝对值。 Abs(number) number 参数可以是任意有效的数值表达式。如果 number 包含 Null,则返回 Null;如果是未初始化变量,则返回 0。
FormatPercent 函数 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以 100 )。 FormatPercent(expression[,NumDigitsAfterD
FormatNumber 函数 返回表达式,此表达式已被格式化为数值。 FormatNumber( expression [,NumDigitsAfterDecimal [,Inc
我是一名优秀的程序员,十分优秀!