我正在处理一些代码中的遗留代码,使用glBitmap()调用来绘制位图图标.我的问题是,一旦你同时绘制了大约1000个图标,它会相当慢.它减慢到大约1到2秒的刷新率,我想看看我是否可以让它更快.
首先,我应该描述当前代码的工作原理.位图图标是32x32图像,每像素一位,预先加载到内存中.对于每个正在绘制的图标,代码执行:
glNewList glRasterPos2f glBitmap glEndList
然后在显示列表上调用glCallList().我知道为每个图标重复调用glCallList()可能会非常慢,但是代码中的一些重叠架构会使更改非常困难.
有没有其他方法可以加快速度,而无需重新构建整个事物?我几乎可以自由地做这种事情,但我必须能够为管理辩护.从glBitmap()更改为使用纹理映射的四边形会更快吗?我可以在单个显示列表中多次调用glBitmap(),只需为所有图标调用glCallList()一次吗?
我过去做过一些GL的东西,但已经有一段时间了.我很生气,但我可以把大部分都弄清楚.
我有简单的类方法
Task TaskSample::Create(void)
{
Task task;
return task;
}
Run Code Online (Sandbox Code Playgroud)
并得到临时警告.这段代码有问题吗?我更喜欢不在这里使用指针
我想创建一个新的rails应用程序并为该应用程序启动rails服务器,所有这些都来自ruby脚本.
我的代码看起来像这样:
#!/usr/bin/env ruby
system "rails new my_app"
system "cd my_app"
system "rails server &"
Run Code Online (Sandbox Code Playgroud)
但是,运行"rails server&"时,路径不在my_app文件夹中,而是在父文件夹中.
有没有办法在脚本中更改目录,以便我可以为该新应用程序运行"rails server","rake about"和"rake db:migrate"?
所有的工作周围的工作将不胜感激.
例如,我正在处理用户可以申请加入群组的网页.
当他们点击"应用"时,我希望它将它们重定向到我们所属的论坛,更具体地说是私人消息系统,主题和正文已经填写完毕.
这甚至可能吗?
顺便说一下,论坛是关闭服务器的.由其他人拥有.
我正在从Windows批处理文件中调用php lint,如下所示:
@echo off
for %%f in (*.php) do php -l %%f
Run Code Online (Sandbox Code Playgroud)
当文件包含语法错误时,它只输出Errors parsing xxx.php.有没有办法让它告诉我错误的本质是什么,它是什么线?也许另一个开关?
我正在研究Visual Studio 2010加载项,我正在试图弄清楚如何确定当前连接的TFS服务器.我猜我需要使用DTE,但我有一个大脑抽筋,想知道从哪里获取信息.
我正在编写一个python脚本来使用SQLAlchemy创建postgres数据库.我也想以同样的方式创建存储过程.我检查了SQL Alchemy Documentations但是无法找到是否可以使用它创建存储过程.有可能这样做吗?任何教程/示例都会有所帮助.我找到了一些如何使用SQLAlchemy调用SP而不是如何创建SP的示例.
提前致谢.塔拉辛格
一个简单的;-)
我宣布:
xmlns:om="clr-namespace:System.Collections.ObjectModel;assembly=System"
Run Code Online (Sandbox Code Playgroud)
我尝试将泛型设置为DataType:
<DataGrid d:DataContext="{
d:DesignInstance Type=om:ObservableCollection<System:Int32>}" />
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:"类型的格式无效".
任何人都知道我该怎么做?
我通常遵循全局变量/函数是邪恶的规则,并且每一段代码都应该存在于它所属的类中.
这是一个非常容易遵循的规则,我相信到目前为止我还没有遇到过这条规则的问题.
然而,今天,我需要的功能添加到我的组装,而不是一个特定的类.也就是说,我的几乎所有类都可以用于这个特定的功能.
我应该把这个功能放在哪里(+1重载)?
如果我把它放在"公用事业"课程中,我会觉得很脏.如果我将它添加到一个半相关的类,并让其他类直接调用它,我会感觉更糟.
这段特殊的代码基本上是IList<PointF>一个规范化的列表.我觉得现在添加它作为扩展方法IList<PointF>可能是最好的选择...
假设我非常防御地编写代码,并且总是从我调用的所有函数中检查返回类型.
所以我喜欢:
char* function() {
char* mem = get_memory(100); // first allocation
if (!mem) return NULL;
struct binder* b = get_binder('regular binder'); // second allocation
if (!b) {
free(mem);
return NULL;
}
struct file* f = mk_file(); // third allocation
if (!f) {
free(mem);
free_binder(b);
return NULL;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
注意free()事情失控的速度有多快.如果某些功能失败,我必须先释放每一个分配.代码很快变得丑陋,我所做的就是复制粘贴一切.我成为了一个复制/粘贴程序员,更糟糕的是,如果有人在其间添加一个声明,他必须修改下面的所有代码来调用free()他的添加.
经验丰富的C程序员如何解决这个问题?我无法解决任何问题.
谢谢,Boda Cydo.
php ×2
allocation ×1
c ×1
c# ×1
c++ ×1
data-binding ×1
datacontext ×1
free ×1
generics ×1
lint ×1
memory ×1
oop ×1
opengl ×1
performance ×1
postgresql ×1
ruby ×1
sqlalchemy ×1
tfs ×1
tfs2010 ×1
warnings ×1