草庐IT

no-opengl

全部标签

c++ - 从 GCC 得到 "no matching function"

为什么这个简单的代码不起作用?templateclassretype{typedefUtype;};classobject{public:templateintcreate(typenameretype::typep){return4;}};intmain(){intn=object().create(5);return0;}使用GCC编译时出现此错误:test.cpp:Infunction‘intmain()’:test.cpp:20:error:nomatchingfunctionforcallto‘object::create(int)’问题出在哪里?

c++ - 无法在opengl中绘制多个对象

我无法弄清楚为什么以下代码不起作用,我正在尝试绘制2个形状,一个红色的三角形和一个多色的立方体,它们本身可以完美地绘制,但如果我尝试绘制两个形状它立即出现了奇怪的错误,我尝试围绕更改变量修改我的着色器来更改行,但我似乎无法接近我想要的结果,当前代码最终绘制了2个使用立方体颜色的相同三角形。GLuintVertexArrayID;glGenVertexArrays(1,&VertexArrayID);glBindVertexArray(VertexArrayID);GLuintMatrixID=glGetUniformLocation(shader->id(),"MVP");glm::m

c++ - 使用 x264 将 OpenGL 输出转换为 H264

我想将OpenGL程序的输出转换为h264并流式传输输出。我在某个地方收集了大部分代码并得到了一个输出文件,但我不知道如何处理它,或者它是否有效。目前输出仅保存在file.h264中。编辑:“全局”变量x264_param_tparam;x264_t*encoder;x264_picture_tpic_in;x264_picture_tpic_out;x264_nal_t*headers;inti_nal;FILE*pFile;我的初始化函数:initX264(){pFile=fopen("file.h264","wb");x264_param_tparam;x264_param_de

c++ - 在 Android 上使用 OpenGL ES 3?

我下载了AndroidNDKr9并编译了一个示例应用程序。我有一部升级到Android4.3的GalaxyNexus智能手机。如何以编程方式确定我的设备是否支持OpenGLES3? 最佳答案 答案在AndroidOpenGLESdocs中.本质上,尝试创建一个3.0EGLContext,如果失败,您就知道3.0不受支持。该页面还显示了另一种方法:为较低级别(1.x或2.x)创建上下文并使用它来调用glGetString(GL_VERSION)。如果版本字符串指示支持3.x,您将销毁该上下文并创建一个新上下文。更新:这个方法可以在Gr

c++ - 为什么 GCC 给我一个错误 : no unique final overrider?

在下面的代码中,我收到以下警告和错误:test.cpp:15:warning:directbase'B'inaccessiblein'D'duetoambiguitytest.cpp:15:error:nouniquefinaloverriderfor'virtualvoidA::f()'in'D'但是如果我从A中移除B的虚拟继承(即structB:publicA),我只会得到警告,没有错误。structA{virtualvoidf()=0;};structB:publicvirtualA{voidf(){}};classC:publicB{};structD:publicC,virt

c++ - 使用 -g 选项编译但 "Single stepping until exit from function main, which has no line number information"

我在使用gdb时遇到了一些问题。这是我在一个名为main.cpp的文件中的代码#includevoidmyfunc();intmain(){charmsg[]="HelloWorld!";myfunc();std::cout我使用这个命令来编译这段代码:g++-g-Wallmain.cpp-ofoo接下来,我使用了gdb:$gdbfoo(gdb)startTemporarybreakpoint1at0x80487c3Startingprogram:/home/laptop/workspace/fooTemporarybreakpoint1,0x080487c3inmain()(gdb)

c++ - 使用 GLFW3 在 OpenGL 上下文之间共享纹理不起作用

下面的程序应该:创建一个不可见的GLFWwindow*masterWindow从文件加载纹理,而事件的OpenGL上下文是与masterWindow相关联的上下文创建一个GLFWwindow*childWindow,在此窗口的OpenGL上下文和masterWindow的上下文之间激活共享在childWindow中显示带有纹理的全窗口四边形但是,这不起作用,即我在childWindow中显示随机的图形内存片段,而不是纹理。如果我在加载它之前使childWindow的上下文成为当前上下文,那么显示纹理确实有效,这就是为什么我认为问题既不在我的着色器也不在我的纹理加载例程(我从这里获取,h

c++ - OpenGL:Radeon 驱动程序似乎与深度测试混淆

我在深度测试方面遇到了一个非常奇怪的问题。我在Windows上的OpenGL3.3核心配置文件上下文中渲染一个简单的网格,启用深度测试并将glDepthFunc设置为GL_LESS。在我的机器上(配备nVidiaGeforceGTX660M的笔记本电脑),一切都按预期工作,深度测试正常,这就是它的样子:现在,如果我在另一台PC上运行该程序,一台配备RadeonR9280的塔式电脑,它看起来更像这样:奇怪的是,真正奇怪的是,当我在绘制前的每一帧调用glEnable(GL_DEPTH_TEST)时,结果在两台机器上都是正确的。当我这样做时它正在工作,我认为在两台机器上都正确创建了深度缓冲区

c++ - 确保 C++ 中的 OpenGL 兼容类型

OpenGL缓冲区对象支持各种定义明确宽度的数据类型(GL_FLOAT是32位,GL_HALF_FLOAT是16位,GL_INT是32位...)如何确保OpenGL的跨平台和面向future的类型?例如,将float数据从c++数组提供给缓冲区对象并声明其类型为GL_FLOAT在float不是的平台上将不起作用不是32位。 最佳答案 在对此进行一些研究时,我注意到在GL规范中定义这些类型的方式发生了细微但有趣的变化。变化发生在OpenGL4.1和4.2之间。直到OpenGL4.1,列出数据类型的表(最近的规范文档中的表2.2)的大小

c++ - 将Qt GUI拆分成多线程用于GUI、模拟、OpenGL是否可行?

我正在尝试使用Qt为工作中的仪器模拟程序设计新布局。我们当前的sim是在单个窗口中运行所有内容(我们同时使用了glut(旧)和fltk),它使用glViewport(...)和glScissor(...)将仪器读数拆分为自己的View,然后使用某种形式的“ortho2D”调用来创建自己的虚拟像素空间。模拟器当前会更新仪器,然后在它们自己的视口(viewport)中一个接一个地绘制,所有这些都在同一个线程中。我们想找到更好的方法,于是我们选择了Qt。我在几个大的限制下工作:每个仪表板仍需要位于其OpenGL视口(viewport)中。有很多按钮和很多仪器。我的暂定解决方案是为每个使用QO