草庐IT

c - 如何确保对象不会超出可见范围 ->opengl->c

假设您在屏幕中心有一些多边形(假设是一个正方形,考虑到二维世界)并且您有一个函数可以从中心点重绘该多边形。每次您在键盘上按向上、向下、向左或向右时,形状都会根据按下的键重新绘制(向上或向下将更新y坐标,向左和向右将更新坐标)。考虑到你有:glutInitWindowSize(400,400);glutInitWindowPosition(400,200);我正在使用glMatrixMode(GL_MODELVIEW),如何防止形状从相机的视线中消失?PS:直到现在我只能防止不从左侧和底部退出,我在重绘时在坐标刷新处测试y或x是否为负(如果是,形状将在相同位置重绘),但我无法找到对窗口的

c++ - 使用 OpenGL 渲染 3D 对象(.obj 文件)时闪烁

在尝试使用OpenGL(和GLFW库)渲染3D对象时,模型出现大量闪烁。我正在使用自己编写的库读取.obj文件。下面写的是我的渲染函数:不幸的是,为了了解面和顶点是如何输入的,我将不得不提供我所有的代码,链接如下:压缩代码以及可执行文件和示例.obj:Source我正在使用来自here的.obj文件来测试程序。现在,该程序不支持法线和纹理,这不是问题,因为网站上的大多数模型都没有它们。此外,(现在)它仅从“123.obj”读取,因此该文件不应命名为任何其他名称。而且它只接受一个空格,不能超过这个。floatrender(){glfwSetTime(0.0f);intwin_width;

c++ - OpenGL 输出窗口立即缩小到 0 x 0 窗口

使用OpenGLUT的OpenGL程序在VisualStudio2012中编译和运行时遇到问题。程序编译正常,当我按下运行时,一个800x600的窗口打开并显示我想要的图像。然而,窗口立即开始缩小,直到它在大约2秒内达到0x0,然后保持打开状态。我不太确定问题出在哪里,谷歌搜索没有找到相关信息。以下是问题的一些截图:上面的截图是程序启动后立即截取的。下面的屏幕截图是在程序启动后大约一秒钟拍摄的,我没有进行任何交互。输出窗口继续缩小,直到大小为0x0。这是我的代码,任何建议都会有所帮助。#ifdef__APPLE_CC__#include#else#include#endif//Clea

windows - OpenGL + GLEW + MinGW 应用程序链接问题

我在构建项目时得到了一些undefinedreference。这是构建日志:****BuildofconfigurationDebugforprojecttest********InternalBuilderisusedforbuild****g++-O0-g3-Wall-c-fmessage-length=0-osrc\main.o..\src\main.cppg++-O0-g3-Wall-c-fmessage-length=0-osrc\test.o..\src\test.cppg++-O0-g3-Wall-c-fmessage-length=0-osrc\window.o..\s

c++ - 在哪里可以下载所有需要的 OpenGL 库、包含和编译的 dll 来制作最新的游戏?

是否有任何用于此目的的软件包,一个下载链接?编辑:现在VBO开始工作了,所以这个问题对我的atm没用,我可以接受答案,但如果有的话。 最佳答案 我建议阅读openglwiki上的入门条目,它经历了这些步骤。http://www.opengl.org/wiki/Getting_started 关于c++-在哪里可以下载所有需要的OpenGL库、包含和编译的dll来制作最新的游戏?,我们在StackOverflow上找到一个类似的问题: https://stack

c++ - 在opengl中删除纹理

我必须在程序存在之前删除我创建的所有纹理(使用glDeleteTextures),还是OpenGL自己删除纹理? 最佳答案 根据管理OpenGL上下文的内容,您可能不需要删除纹理。有关示例,请参阅thisquestion.尽管如此,似乎确实达成了共识,即自己清理是件好事,但在使用C++RAII这样做时要小心!如果在没有OpenGL上下文的情况下创建或销毁通过RAII管理OpenGL对象的C++对象,将发生未定义的行为。参见:TheObjectOrientedLanguageProblemOpenGLAPI和OpenGL对象没有直观地

windows - Windows 上的 OpenGL 1.0 和 1.1 函数指针

我对Windows上OpenGL1.0和1.1函数指针的性质有点困惑。我想我已经记下来了,但我不是100%确定,所以我希望有人能够确认或评论我目前的理解:目前我的理解是您应该使用wglGetProcAddress()加载1.2+函数,但1.0和1.1函数必须用GetProcAddress()加载通过opengl32.dll.然而,引起我注意的是wglGetProcAddress()应该根据哪个HGLRC返回不同的函数指针上下文是当前的。然而大概来自GetProcAddress()的1.0和1.1指针总是一样的。这种行为上的差异让人感觉很不寻常。所以,假设我有多个HGLRC对象,我们称它

windows - 检查 Qt 在运行时使用哪个 OpenGL 引擎进行发布构建

在QML应用程序中thereare3renderingtypes:原生OpenGL:“桌面”角度Direct3D:“角度”软件渲染器:“软件”我们使用支持类型的自动加载机制。如何以编程方式确定在运行时使用的渲染类型?我知道QT_LOGGING_RULES=qt.qpa.gl=true但这会产生很多噪音和DEBUG消息,这些消息不会记录在我们的发布版本中。有没有另一种简单的方法来获取渲染类型? 最佳答案 感谢@peppe和一些额外的研究://thisconnectionmustbeestablishedbeforeshow()isca

c++ - OpenGL 的子窗口不响应 gluOrtho2D()

我使用WinAPI创建了一个子窗口,现在我想在那里画一个三角形。它被绘制了,但是它的比例不正确。我认为这是因为我没有正确安装正交系统。在init()函数中设置,我在WM_CREATE消息中创建子窗口时调用,触发了,但是正投影还是没有设置到所需的大小。所以我只看到三角形的底部。#include#include#include#pragmacomment(lib,"OpenGL32.lib")#pragmacomment(lib,"glu32.lib")//openglvaluesintwindowWidth=600,windowHeight=800,windowDepth=600;voi

C++ OpenGL 窗口只跟踪背景

有人知道为什么在OpenGL中尝试生成一个简单的正方形时会发生这种情况吗?我使用的是ComputerGraphicsThroughOpenGL一书中的以下源代码:从理论到实验。//////////////////////////////////////////////////////square.cpp////StrippeddownOpenGLprogramthatdrawsasquare.////SumantaGuha.////////////////////////////////////////////////////#include#ifdef__APPLE__#includ