小编Jon*_*han的帖子

OpenGL:用于加载资源的辅助线程?

使用C和Win32,我想知道如何实现用于加载资源(纹理和VBO)的辅助OpenGL线程.

从我发现的,这应该用wglShareLists()来完成,但我不确定如何设置辅助线程:

我是否需要新的设备上下文或仅需要新的渲染上下文?

我需要调用哪些wgl函数?

c opengl winapi

11
推荐指数
1
解决办法
6470
查看次数

GCC ARM组装预处理器宏

我正在尝试使用汇编(ARM)宏进行定点乘法:

    #define MULT(a,b) __asm__ __volatile__ ( \
        "SMULL r2, r3, %0, %1\n\t" \
        "ADD r2, r2, #0x8000\n\t" \
        "ADC r3, r3, #0\n\t" \
        "MOV %0, r2, ASR#16\n\t" \
        "ORR %0, %0, r3, ASL#16" \
        : "=r" (a) : "0"(a), "1"(b) : "r2", "r3" );
Run Code Online (Sandbox Code Playgroud)

但在尝试编译时,我得到错误:' asm ' 之前的预期表达式

(你可以忽略下面的所有内容,如果你重视你的时间,但如果你看看它会很好,这里的主要问题是如何进行上述工作)

我试过这个:

    static inline GLfixed MULT(GLfixed a, GLfixed b){
       asm volatile(
        "SMULL r2, r3, %[a], %[b]\n"
        "ADD r2, r2, #0x8000\n"
        "ADC r3, r3, #0\n"
        "MOV %[a], r2, ASR#16\n"
        "ORR %[a], %[a], r3, …
Run Code Online (Sandbox Code Playgroud)

macros assembly gcc preprocessor arm

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

固定点的反平方

我正在寻找固定点16.16数字的最佳逆平方根算法。到目前为止,下面的代码是我所拥有的(但是基本上,它取平方根并除以原始数,我想得到不除数的平方根倒数)。如果更改了任何内容,则将为armv5te编译代码。

uint32_t INVSQRT(uint32_t n)
{
    uint64_t op, res, one;
    op = ((uint64_t)n<<16);
    res = 0;
    one = (uint64_t)1 << 46;
    while (one > op) one >>= 2;
    while (one != 0)
    {
        if (op >= res + one)
        {
            op -= (res + one);
            res +=  (one<<1);
        }
        res >>= 1;
        one >>= 2;
    }
    res<<=16;
    res /= n;
    return(res);
}
Run Code Online (Sandbox Code Playgroud)

math fixed-point inverse sqrt

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

GLSL:用旋转矢量旋转?

我正在尝试用 GLSL 做骨骼动画。对于每个骨骼,我有一个平移(x,y,z)和一个旋转(俯仰,滚动,偏航)(以度为单位)。我可以为每个骨骼构造一个 4x4 矩阵,但这会在着色器中占用大量寄存器空间,所以我只想存储每个骨骼的 6 个值,但我不知道如何做到这一点。

c opengl glsl

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

标签 统计

c ×2

opengl ×2

arm ×1

assembly ×1

fixed-point ×1

gcc ×1

glsl ×1

inverse ×1

macros ×1

math ×1

preprocessor ×1

sqrt ×1

winapi ×1