小编gen*_*ult的帖子

括号中的 C 函数声明显然永远调用自身,有什么意义?

gatomic.cglib 中,有几个函数声明如下所示:

gboolean
(g_atomic_int_compare_and_exchange_full) (gint *atomic,
                                          gint  oldval,
                                          gint  newval,
                                          gint *preval)
{
  return g_atomic_int_compare_and_exchange_full (atomic, oldval, newval, preval);
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下这段代码到底是做什么的吗?我对这里的几件事感到困惑:

  1. 函数名称g_atomic_int_compare_and_exchange_full位于括号内。这有什么意义呢?

  2. 该函数的主体显然只包含对函数本身的调用,因此这将永远运行并导致堆栈溢出(双关语)。

我根本无法理解这个函数声明。这里究竟发生了什么?

c macros function glib function-declaration

89
推荐指数
3
解决办法
8385
查看次数

OpenGL坐标系是左撇子还是右撇子?

我试图了解OpenGL坐标系.然而,一些教程说默认坐标系是左撇子(见http://www.c-sharpcorner.com/UploadFile/jeradus/OpenGLBasics11172005014307AM/OpenGLBasics.aspx),其他人说这是右手(参见http:// www .falloutsoftware.com/tutorials/gl/gl0.htm).哪个是对的?我知道我们可以通过镜像将一个转换为另一个,但我想知道默认坐标.

opengl coordinates

82
推荐指数
4
解决办法
5万
查看次数

OpenGL着色器的显式与自动属性位置绑定

为OpenGL着色器程序设置属性位置时,您将面临两个选项:

链接之前的glBindAttribLocation()以显式定义属性位置.

要么

链接后的glGetAttribLocation()以获取自动分配的属性位置.

使用一个而不是另一个有什么用?

在实践中哪一个(如果有的话)更受欢迎?

shader opengl-es opengl-es-2.0

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

在不使用gluSphere()的情况下在OpenGL中绘制球体?

是否有任何教程解释我如何在OpenGL中绘制球体而不必使用gluSphere()

许多OpenGL的3D教程都只是在立方体上.我已经搜索了但是大多数绘制球体的解决方案都是使用的gluSphere().还有一个站点具有在此站点绘制球体的代码,但它没有解释绘制球体背后的数学.我还有其他版本的如何在多边形而不是该链接中的四边形绘制球体.但同样,我不明白如何使用代码绘制球体.我希望能够可视化,以便我可以根据需要修改球体.

c++ opengl geometry

77
推荐指数
3
解决办法
8万
查看次数

"立即模式"在OpenGL中意味着什么?

什么是"即时模式"?举一个代码示例.

我什么时候必须使用立即模式而不是保留模式?使用每种方法的利弊是什么?

opengl

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

我可以在没有qmake或Qt Creator的情况下使用Qt吗?

我想用Qt编程,但我不想使用特殊的编译器或IDE,如Qt Creator和qmake.我想用Kate编写并用g ++编译.

我可以编译一个使用Qt和g ++的程序吗?如何用g ++编译它?

c++ qt compilation

70
推荐指数
3
解决办法
4万
查看次数

使用无符号循环变量进行反向迭代

我一直在讨论与同事一起使用size_t的问题.出现的一个问题是循环,它将循环变量递减直到达到零.

请考虑以下代码:

for (size_t i = n-1; i >= 0; --i) { ... }
Run Code Online (Sandbox Code Playgroud)

由于无符号整数环绕,这会导致无限循环.在这种情况下你做什么?编写上面的代码并没有意识到你犯了一个错误似乎很容易.

我们团队的两个建议是使用以下样式之一:

for (size_t i = n-1; i != -1 ; --i) { ... }

for (size_t i = n; i-- > 0 ; ) { ... }
Run Code Online (Sandbox Code Playgroud)

但我不知道还有其他选择......

c c++

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

在Android中使用ColorMatrixFilter减去混合模式?

我有以下ColorMatrixFilter.但我想将它用作Subtract-Blend模式的掩码,而不是直接使用它.我该如何实现这一目标?

嘉洛斯:

colorMatrix[
        0.393, 0.7689999, 0.18899999, 0, 0,
        0.349, 0.6859999, 0.16799999, 0, 0,
        0.272, 0.5339999, 0.13099999, 0, 0,
        0,     0,         0,          1, 0
    ];
Run Code Online (Sandbox Code Playgroud)

java android opengl-es colormatrix

54
推荐指数
2
解决办法
817
查看次数

调用glDisableVertexAttribArray()很重要吗?

我不完全清楚启用顶点属性数组的范围.我有几个不同的着色器程序,它们具有不同数量的顶点属性.是glEnableVertexAttribArray对着色器程序本地调用还是全局调用?

现在我在创建着色器程序时启用顶点属性数组,并且从不禁用它们,并且一切似乎都有效,但似乎我可能应该在绘制调用之前/之后启用/禁用它们.对此有影响吗?

(我正在使用WebGL,所以我们真的在谈论gl.enableVertexAttribArraygl.disableVertexAttribArray.我还会注意到橙皮书,OpenGL着色语言,对这些调用没有任何信息.)

opengl-es webgl vertex-shader

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

如何声明引用并在以后初始化

我对C++很新,这是我的情况.我有一个参考MyOjbect,但确切的对象取决于条件.所以我想做这样的事情:

MyObject& ref; 
if([condition]) 
  ref = MyObject([something]) 
else 
  ref = MyObject([something else]);
Run Code Online (Sandbox Code Playgroud)

我现在不能这样做,因为编译器不允许我声明但不初始化引用.我能做些什么来实现我的目标?

c++ reference

52
推荐指数
7
解决办法
6万
查看次数