草庐IT

c++ - 使用 VBO 渲染顶点的问题 - OpenGL

我正在将我的顶点数组函数转移到VBO以提高我的应用程序的速度。这是我原来的工作顶点数组渲染函数:voidBSP::render(){glFrontFace(GL_CCW);//SetuprenderingstatesglEnableClientState(GL_VERTEX_ARRAY);glEnableClientState(GL_TEXTURE_COORD_ARRAY);glVertexPointer(3,GL_FLOAT,sizeof(Vertex),&vertices[0].x);glTexCoordPointer(2,GL_FLOAT,sizeof(Vertex),&vert

c++ - 大气散射 OpenGL 3.3

我目前正在尝试将SeanO'Neil的着色器转换为330版,以便我可以在我编写的应用程序中试用它。我对已弃用的函数有一些问题,所以我替换了它们,但我对glsl几乎是全新的,所以我可能在某处犯了错误。原始着色器可以在这里找到:http://www.gamedev.net/topic/592043-solved-trying-to-use-atmospheric-scattering-oneill-2004-but-get-black-sphere/我在转换它们时的可怕尝试:顶点着色器:#version330core//Inputvertexdata,differentforallexec

c++ - 使用 Haxe C++ 的 OpenGL?

我有兴趣转换为Haxe作为我的主要编程语言,到目前为止它一直很棒,但是我的一个要求是我可以将OpenGL3.3与C++目标一起用于某些3D游戏工作。但是,这似乎是一件奇怪的事情,因为我在网上找不到关于在Haxe中使用OpenGL的信息。我找到了一些库,尤其是hx-ogl和foo3d(抽象的ogl-like),但它们都没有维护,我无法让它们工作。我也找到了一些3D引擎,但我想使用纯OpenGL。此外,我只需要以C++为目标,因此不需要跨平台性。有没有人成功地让OpenGL与HaxeC++一起工作? 最佳答案 Haxeguys继续在Op

c++ - 通过 OpenGL Assimp 加载的对象有时会反转法线

目前我正在尝试在blender中制作的圆柱体对象上进行照明(在z轴上缩放的基本圆柱体,未完成进一步处理)并使用以下选项通过Assimp加载该对象aiProcess_GenSmoothNormals|aiProcess_Triangulate|aiProcess_CalcTangentSpace|aiProcess_FlipUVs。在Blender的波前导出选项中,设置了triangulate选项。问题是在cilinder上进行了一些缩放(通常高于某个缩放阈值)我的OpenGL实现显示了法线反转(我有一个显示法线的几何着色器)并且因为它反转了法线,所以照明是反转的以及。这只发生在这些具有

c++ - 如何在 OpenGL 4.5 中使用 vao 和缓冲区

我想使用OpenGL4.5渲染一个三角形。我在网上找到了很多使用旧版本OpenGL的示例,但没有一个使用OpenGL4.5函数。因此,我尝试自己“升级”一些代码。这是旧的工作代码://Trianglestorendervec3vertices[2][3]={{vec3(-0.90f,-0.90f,1.0f),vec3(0.85f,-0.90f,1.0f),vec3(-0.90f,0.85f,1.0f)},{vec3(0.90f,-0.85f,1.0f),vec3(0.90f,0.90f,1.0f),vec3(-0.85f,0.90f,1.0f)}};//InitializeglGenV

c++ - OpenGL 纹理贴图

我是游戏编程和图形编程的新手。然而,我渴望学习,所以我开始用OpenGL构建游戏引擎。我已经实现了所有基本图形功能,现在我想为我的三角形网格添加纹理支持。我能找到的关于纹理贴图的唯一教程是针对单个多边形的——如何定义环绕整个网格的纹理?我正在使用lib3ds(http://code.google.com/p/lib3ds/)从.3ds文件加载网格。.3ds文件是否携带一些纹理坐标数据或其他内容? 最佳答案 这是一个显示读取纹理坐标示例的页面:http://newsgroups.derkeiler.com/Archive/Comp/c

c++ - GLEW 和 openGL 弃用

我正在使用openGL和glew来检查扩展。假设我想检查我是否可以使用多纹理扩展:如果我可以使用,GLEW_ARB_multitexture将返回true。但是arb_multitexture在openGL3.0中被弃用。它还会返回true吗?在3.1中它被删除了怎么办?谢谢。 最佳答案 如果您的上下文导出扩展,它将返回true,如果它不是“向前兼容”或“核心配置文件”,或者如果它支持“GL_ARB_compatibility”扩展,它将返回。底线是,如果GLEW_ARB_multitexture为真,您可以使用该功能。任何更高级别

c++ - 调整大小后丑陋的字体,OpenGL

我将从一张图片开始:上图显示了以两种不同方式实现的文本,均使用相同类型的字体-Arial,粗体,11号。底部的是在图像编辑程序中创建的,顶部的是我的OpenGL应用程序中创建的。更准确地说,使用FTGL库中的FTExtrudeFont:font_ptrfont(newFTExtrudeFont(filename.c_str()));我的问题是,为什么画成这样?我假设这可能是不同的调整算法的原因,但如果是这样,我如何才能在我的OpenGL应用程序中实现这种更好看的字体(底部字体)?编辑:为了渲染字体,我只调用了这个函数:font->Render(text,//Texttobedispla

c++ - 球体的 OpenGL UV 贴图(有接缝)

尝试将UV坐标映射到球体时遇到以下问题这是我用来获取UV坐标的代码glm::vec2calcUV(glm::vec3p){p=glm::normalize(p);constfloatPI=3.1415926f;floatu=((glm::atan(p.x,p.z)/PI)+1.0f)*0.5f;floatv=(asin(p.y)/PI)+0.5f;returnglm::vec2(u,v);}此问题在stackoverflowquestion中得到了很好的解释,虽然,我仍然不知道如何修复它。根据我一直在阅读的内容,我必须创建一对重复的顶点。有谁知道一些好的和有效的方法吗?

c++ - Opengl - 渲染不同的顶点格式

我正在寻找一种很好的方法来渲染具有不同顶点布局的网格对象,而不需要很大的努力(例如,为每个顶点布局定义一个渲染器类)。您可以在下面看到一些不同顶点格式的示例。enumEVertexFormat{VERTEX_FORMAT_UNDEFINED=-1,VERTEX_FORMAT_P1=0,VERTEX_FORMAT_P1N1,VERTEX_FORMAT_P1N1UV,VERTEX_FORMAT_P1N1C1,VERTEX_FORMAT_P1N1UVC1,};//thesimplestpossiblevertex--positiononlystructSVertexP1{math::Vect