小编Ste*_* Lu的帖子

Makefile为单个目标的多个依赖项?

要生成依赖文件,我可以使用类似的东西来生成依赖文件:

-include $(patsubst %.cpp,build/%.d,$(SRC))
build/%.o: %.cpp
    $(CC) $(CXXFLAGS) -c -o $@ $<
    $(CC) $(CXXFLAGS) -MM -MT $@ -MF $(patsubst %.o,%.d,%@) $<
Run Code Online (Sandbox Code Playgroud)

这会生成所有内容,并将对象和依赖项文件放入我想要的构建目录中.但这会为<file>.o目标创建两个依赖关系,一个来自-include规则,一个是所有头依赖关系,另一个来自模式规则.这是否会被正确解释,即当修改标题时,将通过为模式规则指定的命令重新编译对象?

编辑:所以这种方法确实很有效.我想我希望有人提供一个答案,让我能够深入了解make这些情况下究竟是什么.例如,如果为同一目标的两个规则提供了不同的命令,该怎么办?我的猜测是它会出错,因为执行哪个命令并不明显.

c++ makefile

5
推荐指数
1
解决办法
5141
查看次数

相当于缓冲区上的fgets?

我最初使用fgets逐行解析文件.现在我改变了一些东西,以便我已将整个文件放在缓冲区中.我仍然想逐行读取缓冲区以进行解析.有没有为此设计的东西,或者我是否需要制作一个fgets()在此时检查0x0A 的循环?

c c++ io fgets

5
推荐指数
1
解决办法
2792
查看次数

从Javascript更改(全局)CSS样式

相关问题与不满意的答案:用Javascript更改CSS值

这就是我想要做的.我希望能够将页面元素的类设置为某个值,并让浏览器为其设置动画,例如将背景设置为的表格td rgb(255*(cos(time)*.5+.5),0,0).

通过设置计时器,我可以轻松地为单个元素执行此操作.但我可能希望有多个元素具有此属性,并且必须跟踪每个元素的计时器并不是一个好主意.

所以我想做的是能够从javascript更改CSS值.

我正在看这里的代码,它让我觉得有点太笨重了,我不能使用计时器.从它的外观来看,我对函数的每次调用都会让changecss我将每个css规则附加到每个样式表中.这将在内部主要污染样式表,如果我每隔33ms调用一次循环,可能会导致内存泄漏.

所以我正在寻找一种解决方案,让我可以在对应于特定类的css条目中的rgb颜色设置中进行调零.并修改它.在这种情况下,我实际上不需要检索原始设置.可以这样做吗?如果可能的话,我想支持IE9,虽然IE 6,7,8已经搞砸了我的项目,以至于我已经放弃了它们.

javascript css

5
推荐指数
1
解决办法
7470
查看次数

如果我需要更改VBO,是否需要重建我的VAO?

我通过构造或修改我给出的缓冲区来渲染我的场景glBufferData.我对Vertex Array Objects的理解是,它允许我跳过我正在使用的所有VBO的手动绑定.当我一直更新缓冲区时,情况仍然如此吗?

我可以绑定我的VAO,调用glBufferData更新顶点和索引(目前我只有两个VBO),然后渲染吗?

我可以使用VBO的内存映射吗?然后我可以绑定VAO,修改缓冲区,然后渲染?

VAO究竟做了什么?它的功能是一个快捷方式,它存储和自动化顶点属性绑定到我的VBO?是否拥有数据或绑定的所有权?

opengl

5
推荐指数
1
解决办法
1619
查看次数

对渲染的FBO的纹理查找偏离了半个像素

我有一个通过FBO渲染到纹理的场景,我从片段着色器中对其进行采样,使用基元绘制区域而不是绘制全屏四边形:我通过仅生成我需要的片段来节省资源.

为了测试这个,我发出了与纹理渲染完全相同的几何体,这意味着生成的光栅化模式应该完全相同:当我的片段着色器使用变化的坐标查找其纹理时,它应该完全匹配与其他值一起给出.

这是我给片段着色器设置坐标的方法,用我的全屏纹理自动纹理几何体:

// Vertex shader
uniform mat4 proj_modelview_mat;
out vec2 f_sceneCoord;
void main(void) {
    gl_Position = proj_modelview_mat * vec4(in_pos,0.0,1.0);
    f_sceneCoord = (gl_Position.xy + vec2(1,1)) * 0.5;
}
Run Code Online (Sandbox Code Playgroud)

我在二维工作,所以我不关心这里的视角差异.我只是使用从[-1,1]缩放回[0,1]的剪辑空间位置来设置sceneCoord值.

uniform sampler2D scene;
in vec2 f_sceneCoord;
//in vec4 gl_FragCoord;
in float f_alpha;   
out vec4 out_fragColor;
void main (void) {
    //vec4 color = texelFetch(scene,ivec2(gl_FragCoord.xy - vec2(0.5,0.5)),0);
    vec4 color = texture(scene,f_sceneCoord);
    if (color.a == f_alpha) {
        out_fragColor = vec4(color.rgb,1);
    } else
        out_fragColor = vec4(1,0,0,1);
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果我的alpha不匹配,我会吐出一个红色碎片.纹理渲染将每个渲染对象的alpha设置为特定索引,因此我知道什么与什么匹配.

对不起,我没有图片显示,但它很清楚,我的像素是关闭的(0.5,0.5):我避开我的对象薄,一个像素的红色边框,在他们的底部和左右两侧,弹出进出.这看起来很"短暂".赠品是它只出现在物体的底部和左侧.

请注意我有一条注释掉的行使用texelFetch:此方法有效,我不再显示我的红色碎片.但是我希望能够正确使用texture …

opengl shader textures glsl

5
推荐指数
1
解决办法
2207
查看次数

哪个效率更高,atan2或sqrt?

在某些情况下,有多种方法可以计算相同的值.

现在我想出一个算法来"扩展"2D凸多边形.为此,我想找到扰乱每个顶点的方向.为了产生使多边形具有相同厚度的"皮肤"的多边形扩展的结果,在该方向上扰动的量也取决于顶点处的角度.但是现在我只是担心方向.

一种方法是使用atan2:设B是我的顶点,A是前一个顶点,C是下一个顶点.我的方向是"角平均"的angle(B-A)angle(B-C).

另一种方法涉及到开方:unit(B-A)+unit(B-C)这里unit(X)X/length(X)产生与我的方向的矢量.

我倾向于方法2,因为平均角度值需要一些工作.但我基本上是在两次调用atan2和两次调用sqrt之间做出选择.哪个一般更快?如果我在着色器程序中这样做呢?

我不是试图优化我的程序本身,我想知道这些函数是如何通常实现的(例如在标准c库中),所以我一般都能知道什么是更好的选择.

据我所知,sqrt和trig函数都需要迭代方法才能得出答案.这就是我们尽可能避免使用它们的原因.人们已经提出了"近似"函数,它们使用查找表和插值等来尝试产生更快的结果.我当然不会理会这些,除非我发现我的代码中存在瓶颈的严重证据,因为这些例程或例程严重涉及它们,但sqrt,trig funcs和inverse trig funcs之间的差异可能与讨论有关.

floating-point performance geometry

5
推荐指数
1
解决办法
6354
查看次数

C++异常:为什么使用或扩展std :: exception?

根据这个站点,它可以完全用于抛出一个字符串或整数.我觉得这很干净,很容易理解.有什么缺点throw "description of what happened"而不是throw std::runtime_error("description of what happened")

c++ exception

5
推荐指数
1
解决办法
1707
查看次数

动画页面重排?

我正在切换div的内容(将旧内容淡出,然后淡出新内容),因为它们的内容略有不同,所以当它们发生变化时,对它们下面的一切都进行了一次不和谐的重组.

我的问题是,有没有办法让这个运动顺利进行?

我怀疑几乎唯一可行的方法是使用javascript提前确定起始和结束元素的高度(在我的情况下我只处理垂直对齐移位的块)是什么,并分配这些值直接.一旦我这样做,我相信CSS3过渡将应用一个愉快的动画.

有没有办法在没有指定明确尺寸的情况下获得这个?我似乎记得在某些时候,经验丰富的项目以动画的方式在页面上移动.这让我希望只使用CSS就可以完成.

html javascript css css3 css-transitions

5
推荐指数
1
解决办法
962
查看次数

为什么创建后立即执行的样式分配不是动画的?

在Webkit上打开这个小提琴将展示我正在谈论的内容.

如何在首次指定元素时指定元素的样式,然后指定它的最终状态?

应该可以通过这种方式完全指定单步动画(无需开始使用@keyframes),但似乎在这一点上我必须处理很多特定于实现的异常.注意在Firefox中如何执行动画...

javascript css html5 animation css3

5
推荐指数
1
解决办法
76
查看次数

如何确保在页面卸载之前始终调用代码

通常这并不重要,对于我的情况来说甚至可能不太重要,但我想知道是否有合理的方法来实现这一点。

我的页面自动打开网络套接字连接。为了成为一个更好的客户端,我希望客户端在页面卸载之前自行清理并关闭 websocket。

我希望浏览器能够close()在页面卸载时有先见之明来呼叫我,但如果没有,我如何利用该onbeforeunload消息(或类似的消息)来进行一些“最终清理”(atexit()与C)?

假设我有一些系统,我希望我的客户端出于某种原因向我的 websocket 服务器发送“退出”消息。

我现在可以这样做:

$(window).on('beforeunload', function () {
    websocket.close(); // websocket is a WebSocket
});
Run Code Online (Sandbox Code Playgroud)

但假设close()实际上是一个异步调用(是吗?),我想确保在实际卸载页面之前触发 socket.onclose 回调!这可以做到吗?

html javascript jquery onbeforeunload websocket

5
推荐指数
1
解决办法
1885
查看次数