草庐IT

c++ - Pre Z 缓冲区通过 OpenGL?

我如何使用openGL进行Z缓冲区预传递。我试过这个:glcolormask(0,0,0,0);//disablecolorbuffer//drawsceneglcolormask(1,1,1,1);//reenablecolorbuffer//drawscene//flipbuffers但它不起作用。这样做之后我什么也看不到。执行此操作的更好方法是什么?谢谢 最佳答案 //cleareverythingglClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//z-prepassglEna

c++ - 在 openGL 中设置每秒最大帧数

有没有什么方法可以计算应该进行多少更新才能达到所需的帧速率,而不是特定于系统的?我发现它适用于Windows,但我想知道openGL本身是否存在类似的东西。它应该是某种计时器。或者我还能如何防止FPS急剧下降或上升?这一次,我正在测试它是否在线绘制大量顶点,并使用fraps我可以看到帧速率从400到200fps,绘制速度明显变慢。 最佳答案 你有两种不同的方法来解决这个问题:假设您有一个名为maximum_fps的变量,其中包含您要显示的最大帧数。然后你测量在最后一帧上花费的时间量(一个计时器就可以了)现在假设您说您希望在您的应用程

c++ - 如何在没有 VAO 的情况下使用具有 OpenGL 核心配置文件的 VBO?

在不使用顶点数组对象的情况下使用顶点缓冲区对象时遇到问题。我的理解是VAO只是封装了VBO周围的状态。但VBO不应该在没有VAO的情况下使用吗?这是一个小例子。使用use_vao=true这可以正常工作(呈现橙色矩形)。使用use_vao=false这不会呈现任何内容并在glDrawElements上生成一个GL_INVALID_OPERATION错误。//makesurethemodernopenglheadersareincludedbeforeanyothers#include#define__gl_h_#include#include#include//Forrendering

c++ - OpenGL 3.2 核心配置文件指南

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。谁能推荐学习OpenGL3.2核心配置文件的指南?SDK很难读懂,我看到的大多数指南都只教老方法。

c++ - OpenGL 中的抗锯齿

我刚开始使用OpenGL编程,我正在构建一个时钟应用程序。我希望它看起来像这样简单:http://i.stack.imgur.com/E73ap.jpg但是,我的应用程序看起来非常“未消除锯齿”:http://i.stack.imgur.com/LUx2v.png我尝试了红皮书中提到的GL_SMOOTH_POLYGON方法。然而,这似乎没有任何作用。我正在使用配备英特尔集成显卡的笔记本电脑。名片doesn'tsupport像GL_ARB_multisample这样的东西。此时我的应用程序看起来抗锯齿有哪些选择? 最佳答案 Intel

c++ - openGL子纹理

我有图像数据,我想获取它的子图像用作opengl纹理。glGenTextures(1,&m_name);glGetIntegerv(GL_TEXTURE_BINDING_2D,&oldName);glBindTexture(GL_TEXTURE_2D,m_name);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA

c++ - 纹素中心的采样没有给出正确的结果,OpenGL,C++

不久前,我在显示纹理时遇到了问题,因为我使用纹理元素的边缘而不是纹理元素的中心作为纹理坐标。这与线性混合相结合,给出了平滑的颜色结果,而不是纹理给出的纯色。感谢这里给我的建议,我认为我的问题已经解决,因为我开始使用纹素中心作为坐标,但它只在一种情况下有效,我不知道为什么只在那种情况下。我会再次展示一些图片。这是我使用的纹理(32x32像素),边框为2像素:我正在绘制的整个对象由9个四边形组成,但它们只使用一个纹理(我展示的那个)。其中之一将作为我的问题的解释:我认为很明显该四边形的颜色未根据纹理正确设置。它看起来像是混合的问题,但为了设置纹理坐标,我使用了纹理元素的中心,如下所示:gl

c++ - 自定义窗口框架在 qt 构建中表现不同(ANGLE 与 OpenGL)

我的任务是为QtQuick创建一个窗口,可以像普通窗口一样使用它,但具有自定义框架外观(不是默认的系统装饰)。我想实现类似于VisualStudio窗口或类似的效果。允许我实现该目标的代码如下所示:main.cpp#include#include#include#includeclassframeLess:publicQQuickWindow{public:frameLess(QWindow*parent=0):QQuickWindow(parent){}boolnativeEvent(constQByteArray&eventType,void*message,long*result

c++ - OpenGL - 水波(有噪音)

我目前正在制作水波,所以基本上我是从头开始。我创建了一个基本上是一个平面正方形的网格,并在顶点着色器中对其进行了动画处理(下面是实现它的代码)vtx.y=(sin(2.0*vtx.x+a_time/1000.0)*cos(1.5*vtx.y+a_time/1000.0)*0.2);基本上只是根据sin和cos函数移动y位置,可以观察到结果here!然后我尝试添加一些Perlin噪声(根据IanMcEwan的Perlin噪声函数,可在此处获取github.com/ashima/webgl-noise),如下所示vtx.y=vtx.y+0.1*cnoise((a_time/5000.0)*

c++ - 无法在 QGLWidget 中设置所需的 OpenGL 版本

我正在尝试在Qt4.8.2中使用QGLWidget。我注意到QGLWidget创建的默认上下文不显示3.1以上的OpenGL的任何输出。TheQtwikihasatutorial演示了使用OpenGL3.3绘制一个简单的三角形。当我尝试运行本教程时,出现空白屏幕。如果我将OpenGL版本更改为3.1,我会得到预期的输出(红色三角形)。我的视频卡支持OpenGL4.2,在创建QGLWidget之前调用QGLFormat::openGLVersionFlags()显示Qt检测到OpenGL4.2和所有以前的桌面版本。这是另一个最小的例子:#include#include#include#i