小编fak*_*ake的帖子

OpenGL 的自定义混合方程(着色器)

我正在尝试使用 OpenGL 对透明对象尝试不同的 alpha 混合方程,但看起来片段着色器对单个对象上的片段颜色进行操作,并且无法考虑对象后面的场景。

另一方面,似乎没有办法用任意 GLSL 代码拦截混合阶段,例如,我想不出用当前 OpenGL 基元重现柔光混合模式的方法。

有没有办法调和这些?

opengl alphablending glsl

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

Emacs在C中的宏后缩进

#define INIT_MACRO create(); some(); enviroment();
...
void function(){
  INIT_MACRO
    extra_indented();
  normal_indented();
}
Run Code Online (Sandbox Code Playgroud)

当请求自动缩进时,如何使emacs正确处理上述情况?

编辑我看到的唯一解决方案是告诉emacs处理只包含大写字母,下划线和空格的行,好像他们最后有一个分号......但我该怎么做?

c emacs macros auto-indent

4
推荐指数
1
解决办法
900
查看次数

用于跟踪项目中的函数调用和变量访问的C代码解析器(emacs兼容性很好)

我想要的是一个工具,能够告诉我哪些函数调用特定函数A()(在C项目中),以及哪些函数调用这些函数等,以便我可以有一个函数列表,我知道当它们被调用,有可能会调用函数A().

例如,我们在项目中分散了以下功能:

 void A()
 { /*does something*/ }

 void B()
 {
   A();
   /*and more stuff*/
 }

 void C()
 {
if(unlikely_to_be_false)
    A()
/* moar stoff */
 }

 void D()
 {
/* code that does not refer to A() at all */
 }

 void E()
 {
C()
 }
Run Code Online (Sandbox Code Playgroud)

当使用参数A运行真棒工具时,它将以某种方式返回函数BC和E.

接近这一点,但不完全是我想要实现这一点:给定项目中的某个变量,找到所有读/写操作(直接或间接).

例如:

void A()
{
    char* c; // this is our little variable

    B(c); // this is in the resulting list
}

void B(char* x)
{
    printf("%c", x); // this is definately in …
Run Code Online (Sandbox Code Playgroud)

c emacs parsing function-calls

4
推荐指数
1
解决办法
2343
查看次数

C++ 内联 lambda 参数

考虑以下代码

#include <iostream>
#include <functional>

using namespace std;

inline void readandrun(function<void(int)> callback) {
    int i;
    i = 1;
    callback(i);
}

int main(int argc, char *argv[])
{
#ifdef LAMBDA
    readandrun([](int i){ printf("the read number is: %d\n",i);});
#else
    int i;
    i = 1;
    printf("the read number is: %d\n",i);
#endif
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译

g++ -DLAMBDA -O2 -std=c++17 -S test.cpp -o test_long.S 
Run Code Online (Sandbox Code Playgroud)

产生涉及跳转的代码,而

g++ -O2 -std=c++17 -S test.cpp -o test_short.S 
Run Code Online (Sandbox Code Playgroud)

才不是。哪一种是有道理的,但是否可以告诉编译器内联 lambda 参数,因为它在编译时是已知的?我愿意切换编译器,但为了完整性:

$ g++ --version
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version …
Run Code Online (Sandbox Code Playgroud)

c++ lambda inline

4
推荐指数
2
解决办法
238
查看次数

将视频分解为图像以进行处理

我最近发现了星期五,一个用于haskell的图像处理库,到目前为止似乎相当不错,但我希望能够加载视频并将其分解为图像.haskell有这样的库吗?

haskell image-processing video-processing friday

3
推荐指数
1
解决办法
399
查看次数

使用quickCheck生成levenshtein距离实现的测试用例

作为我学习的一部分,我quickCheck想为levenshtein编辑距离实现构建一个测试生成器.我认为显而易见的方法是从两个相等的字符串和一个随机的非可还原系列的插入/删除/ traspose操作开始,将其应用于其中一个字符串并断言levenshtein距离是随机序列的长度.

我很坚持这可以有人帮忙吗?

haskell quickcheck

3
推荐指数
1
解决办法
817
查看次数

从命令行在Firefox上安装WebExtensions

我发现了如何在脚本中从命令行安装Firefox插件的问题这似乎适用于Firefox扩展(即带有install.rdf文件的扩展)但是WebExtensions(带有manifest.json文件的扩展名)呢?

firefox command-line-interface firefox-addon

3
推荐指数
1
解决办法
9807
查看次数

constexpr静态成员什么时候停止成为constexpr?

我有这个片段.

#include <iostream>
#include <string>

struct JustStr {
    JustStr(const std::string& x) : val(x) {}
    static constexpr bool pred = false;
    std::string val;
};

template <typename T>
class C {
 private:
    T x;
 public:
    C(T x_) : x(x_) {}
    void f() {
        if constexpr (!x.pred) {
                std::cout << x.val << std::endl;
            }
    }

};

template<typename T>
void f2(T x) {
    T y(x);
    if constexpr (!y.pred) {
            std::cout << x.val << std::endl;
        }
}

int main() {
    C<JustStr> c(JustStr("yes"));
    c.f();  // Fails …
Run Code Online (Sandbox Code Playgroud)

c++ constexpr c++17 if-constexpr

3
推荐指数
1
解决办法
72
查看次数

从GADT中获得一个简单的Eq类

我认为GADT很棒,直到我尝试将任何"GADT表达式"的例子分散在互联网上使用.

传统的ADT以免费的Eq为幌子提供定义平等.在GADTs中获取此代码:

data Expr a where
  (:+:) :: (Show a, Eq a) => Expr a -> Expr a -> Expr a
  (:-:) :: (Show a, Eq a) => Expr a -> Expr a -> Expr a
  (:*:) :: (Show a, Eq a) => Expr a -> Expr a -> Expr a
  (:/:) :: (Show a, Eq a) => Expr a -> Expr a -> Expr a
  (:=:) :: (Show a, Eq a) => Expr a -> Expr a -> Expr …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass gadt

2
推荐指数
1
解决办法
363
查看次数

让 IPython 看起来像一个普通的 python shell

我最大的问题是花哨的 IPython 异常。我希望它们看起来像普通的 python 异常,但是当我尝试重置时sys.excepthook它不起作用:

In [31]: import sys; sys.excepthook = sys.__excepthook__; (sys.excepthook, sys.__excepthook__)
Out[31]: 
(<bound method TerminalInteractiveShell.excepthook of <IPython.terminal.interactiveshell.TerminalInteractiveShell object at 0x27c8e10>>,
 <function sys.excepthook>)
Run Code Online (Sandbox Code Playgroud)

python ipython

2
推荐指数
1
解决办法
147
查看次数