所以我发布了a question similar to this in stackoverflow但解决方案似乎可以通过更简单的解决方案来解决。
基本上,我使用 GLEW 加载我的 OpenGL 头文件等,没有任何麻烦,但由于我使用 VIM 和 Clang_Complete 来完成参数,我坚持只完成名称而没有实际显示的参数。因为显然这些函数被定义为
#define FOO somefunction
未定义为
#define FOO(arg1, arg2, arg3) somefunction(arg1, arg2, arg3)
我的解决方案是在我的 ~/.vimrc 文件中添加一个选项,并且必须完全删除 GLEW 并将其替换为
#define GL_GLEXT_PROTOTYPES
#include <GL/gl.h>
#include <GL/glext.h>
所以,我想知道是否有 GLEW 的替代方案可以完成 GLEW 的功能,但实际上显示了参数,或者是否有一种方法可以使用 GLEW 解决这个问题。
最佳答案
为了全面披露,我编写了以下工具。如果这读起来像广告,我深表歉意。
您可以使用 OpenGL Loader Generator .它是一个生成用于加载 OpenGL 函数的头文件和源文件的工具。您指定您感兴趣的扩展和 OpenGL 版本,它只输出这些版本的枚举和函数。这是该工具的主要功能:获取仅包含您打算使用的内容的干净 header 和源文件。
但是次要的特点是它有不同风格的生成。这些样式定义了如何生成输出的细节。
standard "pointer_c" style生成的代码看起来很像 GLEW,其中函数是 #define。这实际上是 C 语言中的基本,因为您无法重新定义全局可访问的变量/函数名称。所以你不能定义一个与非指针函数同名的函数指针。如glVertex3f;该名称已由某些平台上的 OpenGL 库定义,因此您无法定义它的新版本。你必须围绕它#define。
另一方面,C++ 有 namespace 。所以在 the "pointer_cpp" style ,您将获得将大部分 OpenGL 放在 gl 命名空间中的 C++ header 和源代码。这也意味着 Pointer CPP 样式不必使用#defines。所以它没有。 gl::Vertex3f 是一个具有真实参数类型和名称的函数指针。任何体面的代码完成工具都应该能够理解这些。
The "noload_cpp" style做同样的事情。不同之处在于您无需调用初始化函数;您可以调用任何函数指针,如果尚未加载该函数,它将动态加载该函数。
受此讨论的插入,我发布了一个包含 the func_cpp style 的工具版本.这使用内联函数将调用转发到函数指针。这是直接使用函数,所以如果它不能解析这些,那么你的自动完成工具就没有希望了。
关于c++ - 已定义参数的 GLEW 的 OpenGL 替代品或其解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15561048/
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)