之前回答的问题似乎没有回答我的问题"Blocky"Perlin噪音
我试图尽可能地简化我的代码,使我的代码可读和易懂.
我不使用置换表,而是使用mt19937生成器.
我使用SFML
using namespace std;
using namespace sf;
typedef Vector2f Vec2;
Sprite spr;
Texture tx;
// dot product
float prod(Vec2 a, Vec2 b) { return a.x*b.x + a.y*b.y; }
// linear interpolation
float interp(float start,float end,float coef){return coef*(end-start)+start;}
// get the noise of a certain pixel, giving its relative value vector in the square with [0.0 1.0] values
float getnoise(Vec2&A, Vec2&B, Vec2&C, Vec2&D, Vec2 rel){
float
dot_a=prod(A ,Vec2(rel.x ,rel.y)),
dot_b=prod(B ,Vec2(rel.x-1 ,rel.y)),
dot_c=prod(C ,Vec2(rel.x ,rel.y-1)),
dot_d=prod(D ,Vec2(rel.x-1 …Run Code Online (Sandbox Code Playgroud) 为什么我需要输入3.14f而不是3.14才能禁用所有这些警告?这有一个连贯的原因吗?
假设我有一个包含100个随机整数值的数组.我可以改为存储第一个,并将每个连续整数之间的距离放在一起,而不是按原样存储它们.
这个方法怎么称呼?
我知道这个方法看起来完全没用,但它可以用于存储3D模型数据,其中彼此相邻存储的连续顶点实际上非常接近:我可以使用8位整数的数组,而不是使用32位.
我正在阅读这个答案
并遇到这一段
好吧,实际上四叉树并不是我最喜欢的用于此目的的数据结构。我倾向于更喜欢网格层次结构,例如世界的粗网格,区域的更细的网格,以及子区域的更细的网格(3 个固定级别的密集网格,不涉及树),具有行-基于优化,因此其中没有实体的行将被释放并变成空指针,同样完全空的区域或子区域变成空值。虽然这个在一个线程中运行的四叉树的简单实现可以在我的 i7 上以 60+ FPS 处理 100k 代理,但我已经实现了可以处理几百万个代理在旧硬件(i3)上每帧相互反弹的网格。此外,我一直很喜欢网格如何使预测它们需要多少内存变得非常容易,因为它们不细分单元格。
这种类型的网格看起来很直观,听起来有点像“N 阶”网格,其中每个父节点有 N 个子节点,而不是 4 个子节点。N^3 可以比 4^3 走得更远,这允许更好的精度和潜在的(我猜)更少的分支(因为要分支的节点少得多)。
我有点困惑,因为我会直觉地使用一个或可能是 3 个 std::map< operator()来减少它的内存占用,但我不确定它会这么快,因为查询 AABB 意味着堆叠几次访问都是 O(log n)。
他所说的那些基于行的优化到底是什么?这种类型的网格搜索常见吗?
我对 az 阶曲线有一些了解,而且我对四叉树并不完全满意。
我编写了一个生成 xstack 复杂过滤器命令的 python 脚本。视频输入是此处描述的几种格式的混合:
我生成了 2 个命令,一个用于 xstack 过滤器,一个用于音频混合。
这是堆栈命令:(抱歉,文本没有换行!)
'c:/ydl/ffmpeg.exe',
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-filter_complex',
'[0]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf0];[rsclbf0]fps=24[rscl0];[1]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf1];[rsclbf1]fps=24[rscl1];[2]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf2];[rsclbf2]fps=24[rscl2];[3]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf3];[rsclbf3]fps=24[rscl3];[4]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf4];[rsclbf4]fps=24[rscl4];[5]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf5];[rsclbf5]fps=24[rscl5];[6]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf6];[rsclbf6]fps=24[rscl6];[7]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf7];[rsclbf7]fps=24[rscl7];[8]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf8];[rsclbf8]fps=24[rscl8];[9]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf9];[rsclbf9]fps=24[rscl9];[10]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf10];[rsclbf10]fps=24[rscl10];[11]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf11];[rsclbf11]fps=24[rscl11];[12]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf12];[rsclbf12]fps=24[rscl12];[13]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf13];[rsclbf13]fps=24[rscl13];[14]scale=480:270:force_original_aspect_ratio=decrease,pad=480:270:(ow-iw)/2:(oh-ih)/2, setsar=1[rsclbf14];[rsclbf14]fps=24[rscl14];[rscl0][rscl1][rscl2][rscl3][rscl4]concat=n=5[cct0];[rscl5][rscl6][rscl7]concat=n=3[cct1];[rscl8][rscl9][rscl10]concat=n=3[cct2];[rscl11][rscl12][rscl13][rscl14]concat=n=4[cct3];[cct0][cct1][cct2][cct3]xstack=inputs=4:layout=0_0|w0_0|0_h0|w0_h0',
'output.mp4',
Run Code Online (Sandbox Code Playgroud)
这是 mix_audio 命令:
'c:/ydl/ffmpeg.exe',
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4'
'-i', 'inputX.mp4' …Run Code Online (Sandbox Code Playgroud) 我不确定C中的编程真正意味着什么: - 使用C编译器在纯C中编程或使用C++编译器在C中编程.
除了C的C语法和C语言的C++语法之间的差异之外,我可以肯定地说,在性能方面,两个可执行文件之间绝对存在差异(或者极少数情况下)吗?
我正在考虑这个问题,因为在游戏编程中,每个渲染部分,游戏对象部分和游戏脚本部分都可以编程完全不同的语言,以获得执行速度和易于开发之间的最佳折衷,在每一部分.
部件之间的这种分离对我来说很重要,例如,我想制作一个多功能的3D冒险引擎,社区可以制作自己的游戏玩法而不必乱用引擎.它只能制作具有单个角色和几个敌人的游戏,因此将涵盖不同的游戏类型:黑客和斜线,渗透,角色扮演,平台等.
我应该把这两段放在gamedev.stackexchange中,但第一部分只是关于语言......
可能重复:
C++中struct和class之间有什么区别
http://www.cplusplus.com/reference/std/typeinfo/type_info/
我想我的"老师"并没有告诉我很多关于C++中struct和classes之间的区别.
我在其他一些问题中读到有关继承的问题,结构默认是公共的...我也猜测struct没有构造函数/析构函数...
那么其他的差异呢?他们这么重要吗?
在谈到私有/受保护的属性/方法时,它们在运行时是不可访问的,只是因为编译器在编译时告诉它并报告错误,对吧?然后将这些功能与类进行比较,"信息隐藏"真正为程序员带来了什么?是否在这里,当有人重用该类时,这个人不会滥用该类,因为编译器会报告私有/受保护的东西?
我仍然为信息隐藏的真正目的而苦苦挣扎,它仍然希望在我的脑海中发出声音,因为它为程序带来更多安全性,意味着更少的安全漏洞,但我真的很困惑这种设计在语言中的目标...... (而且我不打算以任何方式反对C++,我只是想了解在什么情况下这个功能可能有趣或不;如果不是,那不是问题,但我只是想知道...).
http://en.wikipedia.org/wiki/Typeid
这对我来说似乎是一个谜:编译器如何存储有关对象类型的信息?基本上,一个空类,一旦实例化,在内存中的大小不是零.
struct默认情况下是公共的,默认情况下class是私有的.
让我们以Ogre3D为例; 如果我class用struct 更改所有出现,它会编译(我猜),并且引擎就像以前一样工作.
如果我是对的,编译后的代码与之前完全相同,因为只有编译器会检查是否调用了私有/受保护的方法,而不是在运行时检查它.
如果我仍然是对的,class只是一个关键词,只是让它可爱的眼睛和乞求"请封装你的数据:你将保存一只小猫",而私人/受保护的范围仍然取决于用户.
我知道我听起来有点蹩脚或无关紧要的反叛(类似"C是KISS老兄,不要去")
回到问题:标准对于生成机器代码struct与class生成机器代码之间的这种微小差异有何看法?为什么要添加一个关键字,并试图用所谓的"OO模型"给程序员留下深刻印象,而它完全没有强制执行呢?它受到了java的影响吗?
这看起来像是如何从Python中的另一个线程中止socket.recv(),但事实并非如此,因为我想在一个线程中中止recvfrom(),这是UDP,而不是TCP.
这可以通过poll()或select.select()来解决吗?