小编bof*_*jas的帖子

使用glUniform指针变体后更改变量是否安全?

我想知道glUniformXXv是否会阻塞,直到指针指向的数据被复制到GPU.换句话说,如果GPU忙,此代码是否会导致问题?

int i=5;
glUniform1iv(location,1,&i);
i = 6;
Run Code Online (Sandbox Code Playgroud)

如果GPU忙,这会导致glUniform1fv发送6吗?

opengl

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

从基类中识别派生类

有没有办法检查两个实例是否是相同的派生类?就像是:

Base *inst1 = new A();
Base *inst2 = new B();
Base *inst3 = new A();


bool b1 =  (inst1->class== inst2->class); //<-- should evaluate to false
bool b1 =  (inst2->class== inst3->class); //<-- should evaluate to true
Run Code Online (Sandbox Code Playgroud)

显然,我可以向基类添加一个虚函数,并实现每个派生类以返回唯一值.但是,我宁愿不必为派生类实现任何特定的东西,因为我正在基于派生这个基类来创建API.

c++ polymorphism virtual pointers abstract

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

OpenGL缓冲区-步幅与紧密包装

对于每个属性,使用跨步顶点缓冲区与紧密打包缓冲区有什么优缺点?我的意思是例如:

步幅: xyzrgb xyzrgb xyzrgb

紧: xyzxyzxyz rgbrgbrgb

乍一看,您看起来很容易在使用跨步时更改大小,但是当您使用进行重新分配时,顶点缓冲区的内容将被删除glBufferData()

对我来说,最好使用紧密模型,因为位置,颜色和texcoords可能来自本地内存中的不同数组,并且因为没有跨步缓冲区数据函数;您必须在上传之前将所有数组复制到交错缓冲区中,或者glBufferSubData()每个属性每个顶点使用一个(我猜这是一个糟糕的主意)。

似乎通常使用交错缓冲区(步幅)。这是为什么?我在这里想念什么吗?

opengl vertex-buffer vertexdata vertex-attributes

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

glCheckFramebufferStatus返回0并且glGetError中没有错误

glCheckFramebufferStatus返回0,之后没有从glGetError返回错误.假设这是一个驱动程序错误是否安全?我似乎无法在OpenGL的文档中找到有关如何处理这种情况的任何内容.

我正在使用nvidia专有驱动程序在Linux(Ubuntu 14.04)上使用SDL2编写游戏.

c++ linux opengl sdl framebuffer

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

在不定义类的情况下将attribue作为参数传递的简单方法

说我有一个功能:

def test(ab):
    print ab.a
    print ab.b
Run Code Online (Sandbox Code Playgroud)

如何在不定义类的情况下轻松地将参数传递给此函数?我正在寻找以下内容:

test({4,5})
Run Code Online (Sandbox Code Playgroud)

要么

test(ab.a = 5, ab.b = 6)
Run Code Online (Sandbox Code Playgroud)

这是可能吗?更改功能'test'不是一个选项.

python attributes initialization class function

0
推荐指数
1
解决办法
73
查看次数