小编cod*_*123的帖子

在从C#调用的DLL中使用std :: cout

我的Windows应用程序包含C#部分和C ++部分。C#应用程序在运行时会显示一个控制台窗口。

C ++代码被编译成一个DLL,可通过P / Invoke从C#使用。

问题是通过std :: cout从C ++ DLL打印文本不会打印任何内容。从C#打印效果很好。

我怀疑C#接管了控制台,因此C ++无法使用它。解决方法可能是从C#获取控制台句柄,将其传递给C ++,然后使用其将std :: cout连接到控制台窗口。但是我不知道该怎么做。

有任何想法吗?

编辑:我的C ++代码不受管理。

.net c# c++ dll console

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

glDrawArrays:什么时候结束?

伪代码:

void draw()
{
    Vertex* vertices = scene.GetVertexArray();
    glEnableClientState(...);
    glVertexPointer(..., vertices);
    glDrawArrays(...);
    glDisableClientState(...);
    delete vertices;
}
Run Code Online (Sandbox Code Playgroud)

我不使用VBO,因为我想支持较旧的OpenGL实现.

在调用glDrawArrays之后,我想:

  • 解除分配我的顶点数组(" delete vertices;")
  • 也许修改一些顶点

但是,GL可以自由地异步执行glDrawArrays,并且在完成之前解除分配或修改我的数组是不安全的.

我可以做一个glFinish来确保,但它会减慢应用程序的速度.

那么在什么时候我可以自由地解除分配/修改我的顶点数组?

opengl memory-management vertex-array

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

标签 统计

.net ×1

c# ×1

c++ ×1

console ×1

dll ×1

memory-management ×1

opengl ×1

vertex-array ×1