小编the*_*own的帖子

如何测试 PyObject 是否有迭代器

我正在实现一个 C 函数作为 Python 的扩展。在里面abstract.h,我发现了以下内容:

/* ==== Iterators ================================================ */

/* Takes an object and returns an iterator for it.
   This is typically a new iterator but if the argument is an iterator, this
   returns itself. */
PyAPI_FUNC(PyObject *) PyObject_GetIter(PyObject *);

/* Returns 1 if the object 'obj' provides iterator protocols, and 0 otherwise.

   This function always succeeds. */
PyAPI_FUNC(int) PyIter_Check(PyObject *);
Run Code Online (Sandbox Code Playgroud)

当我尝试PyObject_GetIter在明显不可迭代的对象(如数字)上使用迭代器时,出现错误SystemError: <built-in function xxx> returned a result with an error set

static …
Run Code Online (Sandbox Code Playgroud)

c python

9
推荐指数
1
解决办法
199
查看次数

完美像素:选择正确的校正(OpenGL)

我试图在OpenGL中使用四边形绘制像素完美的位图...令我惊讶的是,缺少了非常重要的像素行:(绿色很好,红色不好)

方形的大小为30x30像素,红色2x2在左上角。

在此处输入图片说明

  • 有人可以解释发生了什么吗?
  • OpenGL如何决定将像素放置在哪里?
  • 我应该选择哪个更正?

纹理使用GL_NEAREST。

    glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
Run Code Online (Sandbox Code Playgroud)

我不使用glViewport和glOrtho。相反,我将通过统一的屏幕尺寸发送给着色器:

uniform float cw;
uniform float ch;
...
gl_Position = vec4(     -1.0f + 2.0f*(in_pos.x + in_offset.x)/cw, 
                         1.0f - 2.0f*(in_pos.y + in_offset.y)/ch,
                         0.0f, 1.0f);
Run Code Online (Sandbox Code Playgroud)

但这似乎不是问题的根源,因为当我在着色器中添加(0.5,0.5)(相当于第3种情况)时,问题就消失了...

好的,现在我意识到第三个选项也不起作用:

在此处输入图片说明

opengl pixel-perfect

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

标签 统计

c ×1

opengl ×1

pixel-perfect ×1

python ×1