因为今天的卡似乎保留了一个渲染命令列表,并且仅在调用时刷新,glFlush
或者glFinish
是否真的需要双缓冲?我在Linux(ATI Mobility radeon卡)上使用SDL/OpenGL开发的OpenGL游戏实际上在初始化代码中SDL_GL_swapbuffers()
被替换为glFinish()
和更少时闪烁SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,0)
.这是我的卡的特殊情况还是所有卡上都有这样的情况?
编辑:我发现原因是KWin.似乎正如datenwolf所说,合成没有同步是原因.当我关闭KWin合成时,游戏在没有任何源代码补丁的情况下工作正常
我有一个numpy.ndarray,其中最大值将多次出现.
编辑:这与numpy.argmax略有不同:如果多次出现最大值,如何获取对应于*last*出现的索引,因为作者说
或者,更好的是,是否可以获得数组中所有最大值出现的索引列表?
而在我的情况下,获得这样的清单可能会非常昂贵
是否可以通过使用类似的东西找到最后一次出现的最大值的索引numpy.argmax
?我想只查找最后一次出现的索引,而不是所有出现的数组(因为可能有几百个)
例如,这将返回第一次出现的索引,即2
import numpy as np
a=np.array([0,0,4,4,4,4,2,2,2,2])
print np.argmax(a)
Run Code Online (Sandbox Code Playgroud)
但是我希望它输出5.
在语言枪战基准http://benchmarksgame.alioth.debian.org/表明FPC程序使用约1 /第50次的存储器的,使用克++使用比较的方案.难道这些基准无意青睐FPC或者是难道真的是FPC是这要比G ++好?我一直认为这些基准测试是一系列不错的微基准测试,所以我对这些结果感到惊讶,因为50倍是相当重要的恕我直言.
参考文献:
http://benchmarksgame.alioth.debian.org/u32/pascal.php http://benchmarksgame.alioth.debian.org/u64q/pascal.html
编辑: 这变得更加有趣,因为这个页面声称pascal只使用了8KB的一些程序,这看起来非常低
我正在实现一个使用的python应用程序ThreadingTCPServer
和一个自定义子类BaseRequestHandler
.这个问题是ThreadingTCPServer
似乎自动生成线程并创建处理程序的实例,调用它们的handle()
函数.然而,除了使用全局变量或类变量之外,这使得我无法将数据传递给处理程序,这两者似乎都是hackish.有没有更好的方法呢?
理想情况下,这应该是这样的:
class ThreadedTCPServer(ThreadingTCPServer):
def process_request(self, *args, **kwargs):
ThreadingTCPServer.process_request(self, data, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
与处理程序一样
class ThreadedTCPRequestHandler(BaseRequestHandler):
def handle(self,data):
#do something with data
Run Code Online (Sandbox Code Playgroud) 我真的很喜欢KDE SC 4的氧气外观.我写了一个程序将这些图标应用到windows.该程序是用NSIS编写的,目前几乎完全正常运行.但是,我发现让Windows了解图标更改的唯一方法是杀死explorer.exe,删除图标缓存,并重新生成explorer.exe.SHChangeNotify
与SHCNE_ASSOCCHANGED
似乎无法使Windows知道的更改控制面板图标,我的电脑图标,等请提出一个更好的,那么残酷的方法来让Windows识别这些更改.
编辑:我发现了一个名为Icon Tweaker的程序似乎能够做到这一点,但它是封闭的来源,所以我不知道它是如何做到的.(IconTweaker:http://www.crystalxp.net/galerie/en.id.83-icontweaker.html )
编辑:感谢Anders的回复(见下文),我的工作正常.但是,我会把我工作的NSIS代码放在这里,万一其他人需要它
ReadRegStr $0 HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size"
IntOp $0 $0 + 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
IntOp $0 $0 - 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
Run Code Online (Sandbox Code Playgroud)
$ 0寄存器用于存储Shell Icon Size
值HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics
.然后我们递增值并执行a SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL)
,然后递减并重新发送.
编辑:作为奖励,这可以用作在Windows …
我正在编写一个在sdl下使用2D OpenGL输出的游戏,我正在尝试使用SDL_ttf加载文本.但是我必须用空白像素填充文本,因为看起来普通的OpenGL不支持两个纹理的非幂.我听说有一个名为OpenGL的扩展GL_ARB_texture_non_power_of_two
,可以实现两个纹理的无功能.到目前为止有多少张卡与此扩展程序不兼容,如何加载它?
我正在编写一个OpenGL游戏,并希望看到原生的GUI元素.我想知道是否有人成功攻击GTK +使用GtkOffscreenWindow
并gtk_offscreen_window_get_pixbuf
渲染到OpenGL纹理,以及这是否具有合理的性能,考虑每次更新GUI时重复重新上传纹理数据
我一直在尝试glDrawElements
在基于磁贴的2D OpenGL游戏中使用.然而,当我绘制切片时,同一顶点的不同面的tex坐标可能不同:例如,这里texcoords对于公共顶点处的2个四边形将是不同的:
___|
___|___
|___
|___
Run Code Online (Sandbox Code Playgroud)
问题是glDrawElements
只需要一个索引数组,因此看起来每个顶点只能使用一个tex坐标.有没有办法克服这个限制?
GLib文档建议在malloc上使用GLib Slice Allocator:
"对于新编写的代码,建议使用新的g_slice API而不是g_malloc()和朋友,只要对象在其生命周期内没有调整大小,并且在分配时使用的对象大小在释放时仍然可用." - http://developer.gnome.org/glib/unstable/glib-Memory-Slices.html
但实际上g_slice明显快于Windows/Linux malloc(速度足以保证处理大小和GLib预处理器黑客的额外麻烦g_slice_new
)?我打算在我的C++程序中使用GLib来处理INIish配置(GKeyFile
)并获得对C++中不可用的数据结构的访问GHashTable
,因此无论如何GLib依赖都无关紧要.
有没有简单和干净的方法来显示与文本输入支持的Qt4(PyQt4的实际上)一个消息框,而不是从预定义列表只选择按钮?我可以(而且已经部分)通过编写一个自定义类来完成这个,只是为了显示这样的对话框,但是不是更清洁的方法吗?
编辑:感谢Luca Carlon我的工作.但是,万一其他人需要这个,我将在下面发布工作PyQt4代码
from PyQt4.QtGui import QInputDialog
#This code works only inside a method of a widget or window as self must refer to a
#valid widget or window to get the correct modality, although we can give None instead
(text,truth)=QInputDialog.getText(self,"Get text","User name",QLineEdit.Normal,"NoName")
if truth:
#The user has accepted the edit, he/she has clicked OK
print text
else:
#The user has not accepted the edit, he/she has clicked Cancel
print "No change"
Run Code Online (Sandbox Code Playgroud) 我正在做一个基于2D回合的RTS游戏,使用32x32平铺(每帧400-500个平铺).我可以使用一个VBO,但我可能不得不每帧更改几乎所有的VBO数据,因为背景是滚动的,每次地图滚动时可见的瓷砖都会改变.使用VBO而不是客户端顶点阵列仍然会在这里产生性能优势吗?另外,如果使用哪种数据格式效率最高的VBO(float,或int16,还是......)?