我打算做一些并行计算,我完全是这个领域的初学者.我将使用MPI进行并行工作,使用Master-Slave模型.我现在有四台机器,并希望其中一台成为主节点.但是,我不知道如何指定运行该程序的其他机器.有没有像指定从节点的IP地址的方法?如何启动我的程序?我正在使用Ubuntu 12.10.
我想开发一个使用两个显示器进行显示的OpenGL应用程序.但是,如果我将窗口大小指定为glutInitWindowSize()两个监视器之和的大小,那么结果窗口仍然总是在一个监视器中,即使我可以将窗口拖动到另一个监视器或重新整形.
OpenGL是否会自动检测另一台显示器并使用两台显示器的总大小?
我的问题是我可以在不使用着色器的情况下使用glDrawElements吗?
我生成我的vbo如下:
glGenBuffers(1, &vertexId_);
glBindBuffer(GL_ARRAY_BUFFER, vertexId_);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex)*((tess.x + 1) * (tess.y + 1)), &pVertex[0].p.x, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *) vOffset_);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *) nOffset_);
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *) tOffset_);
glGenBuffers(1, &indexId_);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexId_);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(unsigned short)*idxCount_, &pIndices[0], GL_STATIC_DRAW);
glBindVertexArray(0);
Run Code Online (Sandbox Code Playgroud)
所以问题是我可以使用glDrawElements而不绑定任何着色器来绘制吗?我正在使用GL 4.0
即使读完红皮书,我仍然无法理解使用OpenGL绘制字体时的“光栅位置”。什么是光栅位置?glrasterpos2f 和 glvertex2f 有什么区别?什么是 GL_CURRENT_RASTER_POSITION?为什么我必须使用这个API来绘制字体?如果有人能说明这一点,我将不胜感激。
是否可以隐藏OpenGL窗口并且渲染仍在运行?我使用glutHideWindow,它永远不会触发显示功能.
如果不可能,程序中是否可以更改当前窗口的焦点?我想运行opengl程序,但我不需要那个窗口.实际上,我想使用另一个程序中每个帧更新opengl的帧缓冲区.但是在两个程序之间切换总是很烦人.(他们都有窗户)
我使用Ctrl-C终止服务器,我认为它会立即关闭套接字.然而事实证明,如果我绑定相同的端口,它将说绑定失败.我用的是mac OS X.有什么想法吗?我甚至为ctrl C实现了信号处理程序来关闭它,但仍然有同样的问题.