草庐IT

c++ - 将 truetype 字形转换为 OpenGL 多边形

我正在尝试将任何已安装的truetype字体转换为一系列可用于在OpenGL中显示文本的多边形。我使用GetGlyphOutline函数将字形转换为一系列轮廓,然后使用glu库对这些轮廓进行三角剖分(镶嵌)。它通常有效,但并非总是有效,并且有一些奇怪的异常(exception)。GetGlyphOutline应该首先以CW缠绕顺序返回外部轮廓,并以CCW缠绕顺序返回内部轮廓(孔)。不幸的是,根据字体和字形,情况并非如此。有时外轮廓是逆时针缠绕顺序,孔是顺时针,或者虽然缠绕顺序是正确的,但GetGlyphOutline返回的轮廓顺序是错误的(例如,我先得到“孔”,然后是外轮廓)。我尝试调

c++ - 在没有窗口的情况下创建 OpenGL 上下文

我正在尝试找出创建用于离屏渲染的无窗口OpenGL程序的最简单方法。目前我正在使用它,到目前为止它工作正常:(为清楚起见,此处删除了错误检查)BOOLcreate_opengl_context(){GLuintPixelFormat;staticPIXELFORMATDESCRIPTORpfd;hDC=GetDC(NULL);PixelFormat=ChoosePixelFormat(hDC,&pfd);SetPixelFormat(hDC,PixelFormat,&pfd);hRC=wglCreateContext(hDC);wglMakeCurrent(hDC,hRC);}使用安全

c++ - OpenGL 着色器错误 1282

我正在尝试为我当前的简单立方体场景添加照明。设置好制服后,这段代码的glGetError()出现1282错误GLuintambientHandle=glGetUniformLocation(program->getHandle(),"ambientProduct");glUniform4fv(ambientHandle,1,ambientProduct);GLuintdiffuseHandle=glGetUniformLocation(program->getHandle(),"diffuseProduct");glUniform4fv(diffuseHandle,1,diffuseP

c++ - 是否有任何计划或现有项目将 OpenGL API 移植到 C++?

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describetheproblem以及到目前为止为解决这个问题所做的工作。关闭9年前。ImprovethisquestionOpenGL标准页面声明OpenGL可以从C和C++中调用。然而,API当然是纯C语言。由于OpenGL使用了很多枚举,使用枚举类(来自C++11)可以大大减少错误的数量,并使API对初学者更可行。可以看出,创建了很多像OpenTK

c++ - 在 Opengl 中使用 glm 旋转

我正在渲染一个圆锥体,我想将它逆时针旋转90度,使尖端朝西!我正在使用OpenGL3+。到目前为止,这是我在Cone.cpp中的代码://PROJECTIONglm::mat4Projection=glm::perspective(45.0f,1.0f,0.1f,100.0f);//VIEWglm::mat4View=glm::mat4(1.);View=glm::translate(View,glm::vec3(2.0f,4.0f,-25.0f));//MODELglm::mat4Model=glm::mat4(1.0);//Scalebyfactor0.5Model=glm::sc

android - 任何 Android 模拟器都支持 OpenGL ES 顶点数组对象吗?

我一直在尝试使用AndroidNDK在C++中运行使用VAO的代码,并在模拟器上运行。我希望能够使用glDeleteVertexArraysOES、glGenVertexArraysOES和glBindVertexArrayOES。我发现模拟器无法运行代码,即使我使用OpenGLES2并使用此解决方案动态链接扩展:AreVertexArrayObjectssupportedinAndroidOpenGLES2.0usingextensions?我在运行API级别19和GPU加速的Nexus4模拟器上运行glGetString(GL_EXTENSIONS)并得到以下结果:GL_EXT_d

c++ - 将 cairo 表面直接渲染到 OpenGL 纹理

我将cairo(http://cairographics.org)与基于OpenGL的3D图形库结合使用。我目前在Windows上使用3D库,但我希望收到一个独立于平台的答案。这都是在c++中完成的。我有一个直截了当的方法,即使用cairo_image_surface_create和glTexImage2D来获得OpenGL纹理。但是,根据我从文档中收集到的信息,cairo_image_surface_create使用基于CPU的渲染器并将输出写入主内存。我了解到cairo有一个新的基于OpenGL的渲染器,它可以直接在GPU上渲染其输出,但我无法找到有关如何使用它的具体细节。(我在g

c++ - GLSL/OpenGL 着色器曲面 segmentation 闪烁和失败

我刚开始使用OpenGL曲面segmentation,遇到了一些麻烦。我正在segmentation由一个顶点形成的一系列补丁。这些顶点/面片以网格状方式构造,随后形成由PerlinNoise生成的地形。我遇到的问题是,从第二个补丁开始,之后每5th个补丁,有时会有很多镶嵌(不是我配置的方式),但大多数时候它根本没有被镶嵌。像这样:  两个白色圆圈标记高度/过度镶嵌的补丁。还要注意未镶嵌补丁的模式。奇怪的是,它可以在我的SurfacePro2(IntelHD4400显卡)上运行,但在我的主台式电脑(AMDHD6950显卡)上出现错误。会不会是硬件坏了?补丁是用代码生成的:vec4*pa

c++ - 用于 Windows 和 OpenGL 的 Qt C++ 库

我正在尝试在Windows上使用Qt库。在他们的downloadspage,我注意到使用VS2012构建的二进制文件有两种形式,有和没有OpenGL。两者之间究竟有什么区别?在OpenGL版本中,他们是否有一些使用OpenGL实现的特殊API或者所有Qt渲染都依赖于OpenGL?另外,有没有使用DirectX的Qt版本? 最佳答案 @Raman:opengl变体使用桌面opengl版本,就像Qt4一样。非opengl变体正在使用角度,您需要将它与DirectXSDK一起安装才能使其正常工作。Angle是directx和opengle

c++ - 我可以使用带有 OpenGL glTexImage2D 函数的灰度图像吗?

我有一个只有1个channel的纹理,因为它是灰度图像。当我将像素传递给glTexImage2D时,它会变成红色(显然是因为channel1是红色;RGB)。glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,dicomImage->GetColumns(),dicomImage->GetRows(),0,GL_RGBA,GL_UNSIGNED_BYTE,pixelArrayPtr);我要更改GL_RGBA吗?如果有,该怎么办? 最佳答案 将其更改为GL_LUMINANCE。见https://www.khron