据我了解,虚拟方法调用是后期绑定,因此无法由编译器内联。显然,nvcc 严重依赖内联代码。我想知道如果在 Cuda 的内核中使用虚拟方法是否有任何严重的缺点。有哪些情况应该避免?它们会对性能产生影响吗?
我试图在着色器中上传带有unsigned short的纹理,但它不起作用.
我尝试过以下方法:
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, vbt[1]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 640, 480, 0, GL_RED, GL_UNSIGNED_SHORT, kinect_depth);
glUniform1i(ptexture1, 1);
GLenum ErrorCheckValue = glGetError();
Run Code Online (Sandbox Code Playgroud)
我知道我正确地绑定了纹理,因为我通过使用获得了一些结果
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, vbt[1]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 640, 480, 0,
GL_RG, GL_UNSIGNED_BYTE, kinect_depth);
glUniform1i(ptexture1, 1);
GLenum ErrorCheckValue = glGetError();
Run Code Online (Sandbox Code Playgroud)
特别是,我在红色通道中获得了部分值.我想将纹理上传为无符号字节或浮点数.但是我没有设法正确地获得glTexImage2D调用.此外,是否可以使用深度纹理类似的东西?我想对从kinect获得的深度信息进行一些操作并显示它.
我不确定这是一个错误还是做错了什么。我的目标是在图例中显示阴影,但是它不起作用。我使用的代码是
import matplotlib.patches as mpatches
...
def plot_legend(ax):
ep = mpatches.Patch(color=[1.0, 0.5, 1.0, 1], hatch='/',
label=r'$\pi_e\ free$')
cp = mpatches.Patch(color=[1.0, 1.0, 1.0, 1], label='$\pi_e = exp(-60)$')
#ax.legend(handles=[ep, cp], bbox_to_anchor=(1.05, 1),
# loc=2, borderaxespad=0.)
pyl.legend(handles=[ep, cp],
loc=1)
return
Run Code Online (Sandbox Code Playgroud)
结果如下:
我使用的matplotlib版本在Mac计算机中为1.5.1。
c ×1
c++ ×1
cuda ×1
glsl ×1
glteximage2d ×1
legend ×1
matplotlib ×1
nvcc ×1
opengl ×1
python ×1