- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我刚开始学习 OpenGL,遇到了一个有趣的错误(这可能是我的不当行为造成的)
但是,我似乎无法弄清楚为什么我的脸在默认情况下被绘制在两侧,而不是一个。下面是一些描述问题的截图
当我继续启用 GL_CULL_FACE(因为显然默认情况下它没有启用,它应该是),我的四边形得到渲染,但都在错误的一边。这是因为我计算法线的方式吗?
这是我计算法线的代码
public static Point3D calculateNormals(Point3D p1, Point3D p2, Point3D p3) {
Point3D v1 = new Point3D(p2.getX() - p1.getX(), p2.getY() - p1.getY(), p2.getZ() - p1.getZ());
Point3D v2 = new Point3D(p3.getX() - p1.getX(), p3.getY() - p1.getY(), p3.getZ() - p1.getZ());
Point3D normal = new Point3D();
normal.addX((v1.getY() * v2.getZ()) - (v1.getZ() - v2.getY()));
normal.addY((v2.getZ() * v1.getX()) - (v2.getX() * v1.getZ()));
normal.addZ((v1.getX() - v2.getY()) - (v1.getY() - v2.getX()));
return normal;
}
注意:创建不带参数的 Point3D 会导致 x、y 和 z 全部设置为 0,因此可以使用 addX、andY 和 addZ。
我应该翻转我的正常计算吗?
最佳答案
When I go ahead and enable GL_CULL_FACE (because apparently it isn't enabled by default, as it should be)
什么意思? GL_CULL_FACE
根据规范的规定,默认情况下是禁用的。
决定什么是正面和什么是背面完全独立于您使用的法线,GL 使用图元的缠绕顺序(由您指定的顶点顺序定义)。默认情况下,如果一个面的顶点(在屏幕空间中)是逆时针方向的,则该面被认为是正面。
您可以通过翻转每个基元的缠绕来重新定向您的脸,或者您可以使用 glFrontFace()
将 GL 的顺序规则从 GL_CCW
更改为 GL_CW
(顺时针),或者您甚至可以使用 glCullFace()
告诉 OpenGL 你想要剔除正面而不是背面。
无论您选择什么选项,我都建议您确保场景中所有对象的缠绕顺序是一致的。原则上可以为每个绘制调用切换订单,但如果不是绝对必要,您应该避免这种情况。
关于java - 两侧都可见 OpenGL Quad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22493027/
我无法理解 .quad函数在汇编中起作用。 从我在线阅读的内容来看,它为当前部分中的每个表达式生成一个 64 位二进制补码值。我明白什么是二进制补码以及该部分引用的行 .quad被称为。 何时何地 .
我是 python 的新手,正在尝试对函数进行数值积分。一切似乎都有效,但我得到的结果与我在 Mathematica 中得到的结果有很大不同(我知道这是正确的)。有人可以帮我弄清楚发生了什么吗? 代码
我有一个高度和宽度,我正在尝试用它们生成一个四边形。当我这样做时: vector vertices; vector indices; Point2D topLeft = Point2(0, heigh
我想要一个矩形立方体。一堵墙的脸朝反面所以我看不到粉红色。这是立方体好的一面: 在立方体的背面,墙的背面是灰色的: 这是代码: glBegin(GL_QUADS); //floor g
我正在尝试编写一些代码,将纹理渲染到一个简单的正方形上,但在让它工作时遇到了很多麻烦。我下载了一些用于纹理映射的示例源代码 here并编译它,它似乎可以很好地将纹理映射到他们的圆柱体上。然后,我添加了
Matlab 中似乎有一个错误 quad使用求积公式计算积分的函数。运行 quad(@(x) (2/sqrt(2*pi))*(x.^2).*exp(-x.^2/2), 0, 10) 回馈 1.0000
我目前正在使用Freebase转储进行项目开发,我将断言插入每个有序的LevelDB中。我的目标是能够给定名称,例如Bob Dylan,以检索与其名称链接的所有类型。 例如,“鲍勃·迪伦”对应于“音乐
import math from scipy.integrate import quad def integrand(x): return 1/math.log(x) for i in ran
我正在尝试使用 Jena 读取 N-Quads 文件,但我得到的只是一个空模型。我试图读取的文件取自 N-Quads documentation 中的示例: .(我将其保存为名为 file.n
我正在尝试使用 Jena 读取 N-Quads 文件,但我得到的只是一个空模型。我试图读取的文件取自 N-Quads documentation 中的示例: .(我将其保存为名为 file.n
我刚开始学习 OpenGL,遇到了一个有趣的错误(这可能是我的不当行为造成的) 但是,我似乎无法弄清楚为什么我的脸在默认情况下被绘制在两侧,而不是一个。下面是一些描述问题的截图 当我继续启用 GL_C
这是有问题的代码: glColor3f(1,1,1); for(int x=0;x 最佳答案 你只有三个 glVertex2f 调用,而你应该有四个(在 GL_QUADS 内)。你有四个 glTexC
你好,我在 C++ 中使用 glut 和 opengl,我有家,我想在其中绘制蓝色 QUADS 我的问题是,当我将 QUADS 绘制为蓝色时,我的所有感觉颜色都是蓝色的,所以我如何才能仅将 QUADS
我正在使用 visual c++ 2012 和 opengl,但无法绘制四边形,我没有遇到任何错误。是因为我没有更新方法吗?这是我的代码: #define WIN32_LEAN_AND_MEAN #i
我已经使用 OpenTK 和 OpenGL 为游戏设置了一个快速的 2D 渲染系统。我已经使用以下方法设置了透明度: GL.Enable(EnableCaps.Blend); GL.BlendFunc
我有一个随机数量的顶点列表,我想获得 2 个四边形三角形的索引。每四个顶点应构成 2 个三角形。例如: 0,1,2, 0,2,3, 4,5,6, 4,6,7, 8,9,10, 8,10,11 我确
题目地址:https://leetcode.com/problems/construct-quad-tree/description/ 题目描述 Wewant to use quad trees
我以 N-Quads、.nq 文件的形式从 Nature 下载了一堆数据。这些包含 RDF 图,对吗?如何访问这些数据,以及如何将 RDF 图形转换为更可用的格式(最好是 R/C++/Python 的
我有一个线框着色器,可以在左侧立方体上显示三角形,并希望对其进行更新,使其仅显示四边形,例如在右侧立方体上。 这是代码: Shader "Custom/Wireframe" { Propert
我正在 PyOpenGL 中制作一个游戏,其中一个对象(例如长方体)应该面向相机。为此,我必须旋转特定对象。我怎样才能做到这一点? glRotatef() 旋转整个世界,但不是单个对象,所以我不能使用
我是一名优秀的程序员,十分优秀!