小编joz*_*yqk的帖子

行注释字符和实际注释开始之间的空格

我意识到这条规则可能因公司的编码标准而异,但总的来说,这是首选的?

  1. 在行评论后有一个空格:

    int foo = Bar(quux + 1); // compensate for quux being off by 1
    
    foo = Bar(quux + 1) # compensate for quux being off by 1
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在评论后没有空格:

    int foo = Bar(quux + 1); //compensate for quux being off by 1
    
    foo = Bar(quux + 1) #compensate for quux being off by 1
    
    Run Code Online (Sandbox Code Playgroud)

关于编码风格的这个方面,我无法在网上找到任何东西.我的猜测是,包括空格是所有语言的首选风格,但我想要一些"确凿的证据"来证实或否认这一点.


这听起来像每个人都有轶事证据表明使用空间是首选.任何人都可以指向一些官方或其他已发布的编码标准,直接解决注释格式问题以及是否应该使用空格?

comments coding-style

26
推荐指数
4
解决办法
6791
查看次数

将增量/减量运算符放在三元/条件运算符中是否安全?

这是一个例子

#include <iostream>
using namespace std;
int main()
{   
    int x = 0;
    cout << (x == 0 ? x++ : x) << endl; //operator in branch
    cout << "x=" << x << endl;
    cout << (x == 1 || --x == 0 ? 1 : 2) << endl; //operator in condition
    cout << "x=" << x << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

0
x=1
1
x=1
Run Code Online (Sandbox Code Playgroud)

我理解输出,但这是不确定的行为?在任何一种情况下,评估顺序是否得到保证?

即使有保证,我也非常清楚使用递增/递减会很快成为可读性的问题.我只是问我看到类似的代码并且立即不确定,因为有很多关于递增/递减运算符的模糊/未定义使用的示例,例如......

c c++ increment ternary-operator decrement

26
推荐指数
3
解决办法
4436
查看次数

Three.js - 蒙皮骨架网格实例,动画和混合

我正在开发一款小型多人游戏,它有一个单一的皮肤玩家网格,很多玩家使用它.一些背景:我尝试通过maya和blender collada export加载.两者似乎都参考了某种形式的动画数据,但我无法让它发挥作用.我已经尝试过maya JSON导出器,它只用一条物质线吐出很小的1k文件.最后,搅拌机JSON导出器工作.对于那些也试图加载蒙皮网格的人,我发现这非常有用:模型与骨骼动画(blender导出)在three.js中动画不正确

所以现在我有一个来自JSON加载器的geometry对象和materials数组.

我可以设置skinning=true材料,创建一个THREE.SkinnedMesh,添加到场景,添加动画THREE.AnimationHandler.add(我不清楚AnimationHandler实际上做了什么),创建一个THREE.Animation,调用play()update(dt).最后我在我的场景中播放了一个网格和一个动画.

现在我想要的是这些......

  1. 很多例子 - 我想在我的场景中运行不止一个玩家模型.

    • 我不希望多次加载相同的网格和动画数据.
    • 动画时间应该是每个实例(因此它们不会同步动画).

    我应该创建多个THREE.SkinnedMeshTHREE.Animation相同的型号?哪里THREE.AnimationHandler来的?

  2. 许多动画 - 我希望空闲/运行周期能够单独播放.

    AFAIK只有一个动画关键帧的时间轴.Three.js如何为我分区,或者我必须手动执行此操作?

  3. 动画混合 - 当角色停止运行并使用空闲动画静止不动时,我不希望从一个角色到另一个角色立即快速捕捉.我想暂停运行动画并将该状态重新混合到空闲动画中.

    目前这是否可以使用蒙皮网格(不是变形目标)?是否有关于此的示例或文档?

任何信息都会受到高度赞赏,即使只是朝着正确的方向努力.我不是在完整的教程之后,我想了解一些关于这些功能的更高级别的信息.

我可以愉快地实现23,但我想要一些关于threejs皮肤和动画框架的信息/描述文档来帮助我入门.例如,不是很多.

[ 编辑 ]
谢谢,@ NishchitDhanani,这个页面相当不错,但没有提到多个动画或混合骨骼动画:http://chimera.labs.oreilly.com/books/1234000000802/ch05.html#animating_characters_with_skinning

这个页面说多个动画仍然是当前的问题,但不多(在评论中稍微讨论):http: //devmatrix.wordpress.com/2013/02/27/creating-skeletal-animation-in-blender-and -exporting,其对三JS /

目前的答案是......

  1. 使用很多THREE.SkinnedMesh但仍然不确定THREE.AnimationHandler …

javascript animation opengl-es three.js skeletal-mesh

25
推荐指数
1
解决办法
9121
查看次数

如何测量OpenGL中的峰值内存带宽?

只是想知道我应该期待什么样的速度,我一直试图在全局内存和着色器之间进行基准测试,而不是依赖于GPU规格表.但是我无法接近理论上的最大值.事实上,我出局了50倍!

我正在使用GTX Titan X,据说它有336.5GB/s.Linux x64驱动程序352.21.

我在这里找到了一个CUDA基准测试,它给了我~240-250GB/s(这更符合我的预期).

我正在尝试将它们与着色器完全匹配.我已经试过顶点着色器,计算着色,经由访问缓冲器对象image_load_storeNV_shader_buffer_store,具有floatS,vec4S,着色器内循环(与工作组内聚结的寻址)和定时的各种方法.我卡在~7GB/s(参见下面的更新).

为什么GL这么慢?我做错了什么,如果是的话,应该怎么做?

这是我的MWE有三种方法(1.顶点着色器与image_load_store,2.顶点着色器与无绑定图形,3.计算着色器与无绑定图形):

//#include <windows.h>
#include <assert.h>
#include <stdio.h>
#include <memory.h>
#include <GL/glew.h>
#include <GL/glut.h>

const char* imageSource =
    "#version 440\n"
    "uniform layout(r32f) imageBuffer data;\n"
    "uniform float val;\n"
    "void main() {\n"
    "   imageStore(data, gl_VertexID, vec4(val, 0.0, 0.0, 0.0));\n"
    "   gl_Position = vec4(0.0);\n"
    "}\n";

const char* bindlessSource =
    "#version 440\n"
    "#extension GL_NV_gpu_shader5 : enable\n"
    "#extension GL_NV_shader_buffer_load : …
Run Code Online (Sandbox Code Playgroud)

c++ opengl nvidia glsl

18
推荐指数
1
解决办法
1081
查看次数

在使用断点进行调试时强制使用chrome来刷新页面

如果我在一个循环或频繁的间隔中有一个断点,我不能刷新chrome而不强制重新加载ctrl-r.

点击F5/单击刷新按钮将执行正常刷新,仅加载修改后的内容,除非调试器在断点处暂停,在这种情况下调试器将继续.保持/垃圾邮件F5只是循环通过断点,我发现错误并进行代码更改后无法刷新页面.我不想做一个完整的重载(ctrl-r),因为我有图像和其他内容被缓存,不需要重新下载.

一种解决方案是关闭调试器,刷新然后打开调试器.但是,JS在调试器备份之前有机会运行.然后我必须再次刷新,以便JS从头开始运行.

有没有人找到解决方法?

它可能只是我,但我经常想要更改我的代码并同时调试它.


  • 刷新: F5

  • 不,实际刷新:hammer+ F5

javascript google-chrome google-chrome-devtools

15
推荐指数
1
解决办法
1万
查看次数

将圆形缓冲器移位/对齐/旋转到原位为零

我正在使用循环缓冲区将数据推送到列表的任何一端.在我完成之后,我想对齐缓冲区,使列表中的第一个元素位于零位置,并且可以像常规数组一样使用,而不需要任何花哨的索引开销.

所以我有我的循环list容量N,它有n从任意索引开始的元素f.

在此输入图像描述

移动/旋转所有元素的最快方法是f = 0什么?

问题是我想要就地做到这一点(当然,当然需要一些寄存器/临时工).缓冲区可能是full(n = N),[ EDIT ],但我也有兴趣有效地处理它几乎为空的情况.

arrays algorithm list circular-buffer

13
推荐指数
1
解决办法
3353
查看次数

在makefile中处理管道及其退出状态的最佳方法

如果命令失败make,例如gcc,它退出...

gcc
gcc: fatal error: no input files
compilation terminated.
make: *** [main.o] Error 4
Run Code Online (Sandbox Code Playgroud)

但是,如果我有一个管道,则会获取管道中最后一个命令的退出状态.举个例子,gcc | cat因为cat成功不会失败.

我知道整个管道的退出代码存储在PIPESTATUS数组中,我可以得到错误代码4 ${PIPESTATUS[0]}.我应该如何构建我的makefile来处理管道命令并在正常情况下退出失败?


在评论中,另一个例子是gcc | grep something.在这里,我假设最理想的行为仍然是,gcc并且只会gcc导致失败,而不是grep如果它没有找到任何东西.

linux bash makefile

13
推荐指数
2
解决办法
3605
查看次数

引号= 3(QUOTE_NONNUMERIC)的Pandas to_csv不起作用

从关于和其他人的文档to_csv():

引用:int,控制是否应该识别引号.值取自csv.QUOTE_*值.对于QUOTE_MINIMAL,QUOTE_ALL,QUOTE_NONE和QUOTE_NONNUMERIC,可接受的值分别为0,1,2和3.

设置quoting=3仍然不会引用字符串,即使它们不是数字,并且libreoffice经常默认为按空格分割,直到它为时已晚.如何编写CSV,正确引用带空格的字符串?

python pandas

13
推荐指数
1
解决办法
1万
查看次数

为新用户提供默认权限或默认组

默认行为似乎是新用户没有权限而没有组.但是,我不想手动授予每个新用户基本权限,我认为他们不想等我这样做.

我应该如何为新用户分配默认权限?

已经提出了一些类似的问题,但对一般情况没有明确的答案:

我正在使用python-social-auth所以我没有自己的创建用户表单和视图,我想其他人都设置了默认权限.我假设我需要某种类型的on-user-create挂钩,但不确定最干净的方法是什么.

这与创建可能授予用户的默认可能权限无关,但作为参考,

django django-permissions python-social-auth

12
推荐指数
1
解决办法
5055
查看次数

Chrome坚持要保留陈旧/旧的javascript代码,不会重新加载最新版本

我正在做一些非常简单的web开发并使用chrome的调试器.当我修改源代码时,包含的javascript似乎永远不会更新.我可以删除整个文件的内容,它仍然加载陈旧的代码(除非我重新启动chrome).如果我删除了文件的权限,它会注意到并且不会加载页面,但是当替换权限时,旧代码又会返回.当通过http和本地文件直接获取时,会发生这种情况.没有任何垃圾邮件重新加载或ctrl-F5工作.我已经尝试清除并手动删除缓存,甚至在开发人员选项中设置了不缓存选项.我不认为chrome是在局部修改模式,但我永远不会告诉(这个"功能"是非常错误的,如果有时不太可取).我在firefox中没有这个问题,但特别想在此刻测试chrome.

谁看过这个吗?常见原因是什么?我该怎么做才能防止这种情况发生?

我正在使用google-chrome 31.0.1650.39-1运行fedora 18 - 并在注意到更新版本之后 - 32.0.1700.19-1.两者都有同样的问题.

javascript google-chrome

8
推荐指数
2
解决办法
4565
查看次数