小编dan*_*jar的帖子

为什么无法从我的灯光着色器访问G-Buffer?

我在我的引擎中实现了一个新的渲染管道,渲染现在已经破坏了.当我直接将G-Buffer的纹理绘制到屏幕时,它会正确显示.所以G-Buffer很好.但不知何故,照明通道会造成麻烦.即使我没有使用它的结果纹理,但尝试在光照通过后从G-Buffer显示反照率,它显示纯灰色.

我无法解释这种行为,奇怪的是,任何时候都没有OpenGL错误.

顶点着色器绘制全屏四边形.

#version 330

in vec4 vertex;

out vec2 coord;

void main()
{
    coord = vertex.xy;
    gl_Position = vertex * 2.0 - 1.0;
}
Run Code Online (Sandbox Code Playgroud)

用于照明的片段着色器.

#version 330

in vec2 coord;
out vec3 image;

uniform int type = 0;
uniform sampler2D positions;
uniform sampler2D normals;
uniform vec3 light;
uniform vec3 color;
uniform float radius;
uniform float intensity = 1.0;

void main()
{
    if(type == 0) // directional light
    {
        vec3 normal = texture2D(normals, coord).xyz;
        float fraction = max(dot(normalize(light), normal) / …
Run Code Online (Sandbox Code Playgroud)

c++ opengl rendering framebuffer

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

如何计算64位哈希冲突的风险?

我的应用程序需要全局唯一 ID。我知道有一个 UUID 标准,但我想知道我是否真的需要 128 位。

因此,我考虑编写自己的生成器,它使用系统时间、随机数和机器网络地址来生成适合 64 位的 id,因此可以存储在unsigned long long intC++ 的数据类型中。

如何确定 64 位对我来说是否足够?

hash uuid types conflict bit

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

如何在 PHP 中返回静态文件?

我使用一个.htaccess文件将所有请求重定向到同一个index.php. 从那里,我根据传入请求的 URL 决定要做什么。

现在,我将请求 URL映射到相对于source文件夹的目录结构,以便example.com/user/create映射到source/user/create/index.php. 位于那里的文件可以根据需要处理请求,并生成 HTML 输出。

但这不适用于静态资产,浏览器可能会请求。所以我的想法是找出请求 URL 是否以文件扩展名结尾并将其映射到相对于assets文件夹的目录结构,以便example.com/css/default.css映射到assets/css/default.css. 但我不知道如何使用静态文件而不是来自 PHP 的 HTML 代码进行响应。

通常,这可能会使用附加.htaccess规则来完成,但我想在代码中动态更改资产文件夹。

如何将服务器硬盘上给出的静态文件发送到 PHP 中的浏览器客户端?

php server-response assets httprequest static-files

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

如何处理跨平台C++项目中的依赖项?

这是我以自动方式处理跨平台项目中的外部库的方式.(为什么没有跨平台的包管理器?)

  • 将编译的二进制文件添加到存储库.(这不起作用,因为平台和构建配置各不相同,可能会出现新的环境.)
  • 编写下载脚本以从Internet获取源代码.我可以想到从Github或通过HTTP从项目的网站克隆库.(当下载链接发生变化时,这会中断.此外,我不知道如何自动构建所有库.)
  • 将所有依赖项的源代码包含到存储库中,或者作为子存储库.(问题仍然是找到一种自动编译方式.它还需要很大的空间.)

在跨平台C++项目中处理外部库的工作流程是什么?有很多大型项目,我想一定有一个.如果没有,我可以根据哪些标准在合理的方式之间做出决定?

c++ git dependencies cross-platform cmake

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

比较python中的两个scipy.sparse矩阵

我从事处理大型网络的程序,因此我必须使用稀疏矩阵(最好scipy.sparse.csr).现在我想编写一个函数,它接受两个稀疏布尔矩阵A和B,并返回B而没有在A中设置的那些条目.这是一个伪代码示例.

def f(A, B):
    return B and (not A)
Run Code Online (Sandbox Code Playgroud)

如何用scipy.sparse矩阵完成这个?

python scipy sparse-matrix

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

是否有用于成员方法的 C 宏?

函数可以通过使用函数指针耦合到它们的引用结构。

struct string
{
    char *value;
    size_t (*size)(struct string *);
};

size_t size(struct string *this)
{
    size_t i;
for(i = 0; this->value[i] != '\0'; ++i);
return i;
}

struct string *construct()
{
    string this = (string)malloc(sizeof(struct string));
    this.size = &size;
    // ...
}

int main()
{
    struct string *s = construct();
    // ...
    s->size(s); // explicitly pass self reference
}
Run Code Online (Sandbox Code Playgroud)

但我想摆脱this手动传递指针。我知道当您调用对象的方法时,这是在 C++ 中隐式完成的。有没有办法在 C 中为此创建一个适用于所有方法和签名的宏?

例如,我可以想到这样的语法。

s=>size(); // implicitly pass self reference
Run Code Online (Sandbox Code Playgroud)

请注意,这仅用于学习目的。我知道如果可能并且您想使用类耦合,最好只使用 C++。但我对如何在 C 中完成它很感兴趣。

c methods macros function-pointers class

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

是否有像包含目录别名的概念?

在跨平台项目中,我使用了许多第三方库.我最终决定将他们的源代码包含到我的存储库中,而不需要在每个平台上再次下载它们.这是许可证允许的.

要包含这些库中的标头,我需要指定它们的文件路径.有些库有它们,name/include/name/file.h但一般来说,每个库都有不同的目录结构.

我想在代码中包含标题,#include "name/file.h"其中name是库的名称.但是我既不想修改库的目录结构,也不想将所有头文件复制到我想要的结构的include目录中.

有没有办法定义包含目录别名?例如,Bullet Physics有它的标题bullet/src,Sqlite直接有标题sqlite,SFML包含它们sfml/include/SFML.我想指出这样的事情:

#alias "dependencies/bullet/src" "bullet"
#alias "dependencies/sqlite" "sqlite"
#alias "dependencies/sfml/include/SFML" "sfml"
Run Code Online (Sandbox Code Playgroud)

所以这#include "sfml/System.hpp"变得等同于
#include "dependencies/sfml/include/SFML/System.hpp".

该技术不必处于预处理阶段.例如,它也可以是以正确方式生成项目的CMake标志.但是,我认为编译器必须以某种方式了解这种技术,才能实现这一点.

c++ cross-platform project cmake include

5
推荐指数
2
解决办法
3081
查看次数

对于模型,null = True意味着默认=无吗?

当允许Django模型的数据库字段为NULL时null=True,默认值是否保证为NULL?或者我必须手动配置:

report = models.FileField(upload_to='reports', null=True, default=None)
                                                          ^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

关于模型字段的文档中我找不到任何关于它的内容.

django null django-models django-1.7

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

如何在 SVG 坐标中计算?

给定一个简单的 SVG,其中包含一条从左上角到右下角的宽度。

<svg><line x1="0px" y1="0px" x2="100%" y2="100%"
style="stroke: #aaa; stroke-width: 6px"/></svg>
Run Code Online (Sandbox Code Playgroud)

该行被定位并用 CSS 拉伸。因为它总是跨越整个 SVG,我可以只设置 SVG 的宽度和高度来做到这一点。问题是线的边缘在角落处被切割。

带有切边的 SVG 线

因为我想看到整条线,包括它的角落。我想过将两倍于 SVG 大小的笔画宽度添加进来。然后该线可以从左侧和顶部的 6px 开始并转到 100% - 6px。如何在 SVG 中表达这个计算出的坐标?我需要类似calc()CSS3 中的东西。

html css svg line coordinates

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

尾随返回类型函数语法中的 auto 关键字背后是否有意图?

在 C++11 中,这两行是等价的。从我看来,第二种语法优点是返回类型在类范围内。因此,您可以直接使用类的嵌套类型和decltype非静态成员的表达式。此外,函数名称排列得很好。

int foo(int bar);
auto foo(int bar) -> int;
Run Code Online (Sandbox Code Playgroud)

auto这里使用的关键字,它也可以用来自动地得到局部变量的类型。但是,我没有看到这里的类比。在函数声明语法中,没有派生任何东西。箭头后面明确提到了返回类型。

就个人而言,我会说没有auto关键字语法会更清晰。这背后有什么意图吗?哪一个?

c++ syntax function-declaration c++11 trailing-return-type

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