- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试以正常填充模式渲染图元,然后将其渲染为线框。
渲染代码:
glClear(GL_COLOR_BUFFER_BIT);
glClearColor(0.9f, 0.9f, 0.9f, 1);
// reset matrix
glLoadIdentity();
// fill display list
glColor3c(150, 255, 255);
glCallList(lDList);
// wireframe display list
glColor3f(0, 0, 0);
glLineWidth(10);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINES);
glCallList(lDList);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
显示列表创建代码:
lDList = glGenLists(1);
glNewList(lDList, GL_COMPILE);
glBegin(GL_QUADS);
glVertex3i(-1, -1, 0);
glVertex3i(1, -1, 0);
glVertex3i(1, -1, -25);
glVertex3i(-1, -1, -25);
glEnd();
glEndList();
glColor3c 宏:
#define glColor3c(r, g, b) glColor3f(r / 255, g / 255, b / 255)
我希望得到一个青色的平面,周围有一个黑色的框,但所有发生的事情是,我第二次渲染显示列表时,它只是简单地填充和绘制整个东西,覆盖其他原始的。我最终得到了我想要绘制的平面,但它只是黑色(我为“版本”行指定的颜色)。
任何其他可能有用的信息是我在 Windows 7 上使用 SDLMSVC++ 2010。我没有对 glEnable 进行任何 调用,因此我没有启用会弄乱它或解决问题的奇怪设置。我唯一的 OpenGL 设置代码设置投影和模型 View 矩阵,然后创建显示列表。
显然我的问题是为什么我第二次绘制显示列表时是填充图元而不是创建线?我该如何解决这个问题?
最佳答案
根据 glPolygonMode
的文档在 OpenGL 4.0 中,第二个参数 mode
只能是 GL_FILL
、GL_POINT
或 GL_LINE
之一。在您的示例中,您传递的是 GL_LINES
,这是一个完全不同的枚举值。
我怀疑传递的 GL_LINES
是由 OpenGL 处理的,如果接收到的模式不是它所期望的,它默认返回到 GL_FILL
。
另请注意:glPolygonMode
的规范与 OpenGL 2.1 相同。
关于c++ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINES) 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13262525/
我在使用 GL_LINES block 时遇到问题……下面示例中的线条没有连接到末端(尽管有时它会随机决定连接一个或两个角)。相反,端点彼此相距 1 像素(留下一个未完全平方的角;如果这有意义的话)。
一段时间以来,我一直对 GL_LINES(以及 GL_LINE_LOOP 和 STRIP)感到好奇,我想知道 GL 实现通常如何处理它们。他们是否从线的端点和宽度推断出四边形?它会做一些更原始和更专业
我正在尝试使用 OpenGL 和 Pygame 创建一个 3d Rubiks Cube。但是,当我尝试在我创建的 GL_QUADS 表面上绘制线条时,它们没有显示出来。 我已经尝试将 GL_LINES
我想绘制一个删除隐藏边缘的对象的边缘。我想应用的想法是首先将对象的面渲染到深度缓冲区,然后在第二遍中绘制边缘并启用深度测试。 由于并非所有三角形边都应该可见,因此这些边是单独存储的(简单示例:在立方体
考虑以下代码: glColor4ub(255, 255, 255,255); glBegin(GL_QUADS); glVertex2i(100, 100); glVertex2i(300, 100)
我试图通过添加混合渲染到 FBO 来计算每个像素被写入的总次数来近似“轨迹密度”。 问题是 (1) 位移大的元素会因为线较长而被计数更多次,以及 (2) 由于用于绘制线的像素数也取决于线的角度。 我想
我试图用下面的代码画一条线,它的工作原理: // Include standard headers #include #include // Include GLEW #include // I
我所说的“类似钢笔”的笔画是这样的:当你用圆珠笔在纸上画画时。您将获得一 strip 有圆形开头和结尾的线条。如果我的解释不够好,请参阅 http://java.sun.com/docs/books/
glEnable(GL_CULL_FACE); glCullFace(GL_FRONT); glPolygonMode(GL_BACK,GL_LINE); 在上面的代码示例中,glPolygonMod
一段时间以来,我一直在使用 OpenGL 来制作 3D 应用程序,但我从来没有真正理解在生产阶段使用 GL_POINT 和 GL_LINES 原始绘图类型用于 3D 游戏。 (哪里)OpenGL 中的
我正在尝试以正常填充模式渲染图元,然后将其渲染为线框。 渲染代码: glClear(GL_COLOR_BUFFER_BIT); glClearColor(0.9f, 0.9f, 0.9f, 1); /
我被要求制作一个简单的旋转木马,通过鼠标左右点击来旋转。对于我使用的棍子 GL_LINES我遇到的问题是无法定义法线 vector 或类似我在 GL_POLYGON 中所做的事情使照明正确。我在网上搜
我无法让我的着色器在纹理的周边运行。我正在关注 https://learnopengl.com/作为指南并使用索引顶点绘制线基元。问题是只绘制了右侧和底部的线,缺少顶部和左侧。 我编写了一个小程序来尝
我正在努力开发一款仅使用程序生成的线条绘制的新 iOS 游戏。除了绘制一些图元时出现一些奇怪的问题外,一切都运行良好。 我正处于需要实现文本的位置,字符被设置为数组中的一系列点。当我去绘制点(CGPo
我正在尝试使用着色器在 OpenGL 中绘制 3D 线条...到目前为止还没有办法做到这一点。 我的工作正常: void draw_bonds (int nbonds) { glDisable (
我正在编写一个 OpenGL 库,它可以使用屏幕坐标绘制点、线和矩形。但是,我不知道如何将屏幕坐标转换为剪辑或相机坐标。我正在使用现代 OpenGL(顶点数组和顶点缓冲区,以及着色器)。 这基本上就是
如果我使用 GL_LINES 或 GL_LINE_STRIP 渲染多段线,我是否可以假设具有低顶点索引的线段首先绘制到帧缓冲区?比如,当我使用顶点 v0、v1、v2 指定线带时,我是否可以假定先渲染线
首先,这段代码的目的是什么? glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); 我可以放在那里 GL_DONT_CARE 但它不会让我画线,除非我使用 glDisable
我有以下程序,但我无法弄清楚为什么 glColor4f() 调用不会导致 glDrawArrays() 的输出出现红线,任何人都可以吗告诉我我做错了什么?由于某种原因正在输出一条白线。现代版本的 GL
我刚刚完成了我的 iOS 应用程序的第一个版本,Corebox ,现在正在开发一些新功能。 其中一项新功能是对 OpenGL 渲染进行“小”调整,以强制某些对象永远不会被绘制为小于最小尺寸。所有需要这
我是一名优秀的程序员,十分优秀!