我有一个2D矢量列表(比如20x20 / 400点),我在这样的屏幕上绘制这些点:
for row in grid:
for point in row:
pygame.draw.circle(window, white, (particle.x, particle.y), 2, 0)
pygame.display.flip() #redraw the screen
这完美无缺,但它比我预期的要慢得多。
我想用C ++重写它,并希望在路上学习一些东西(我在C ++ atm上做一个单元,所以它会有所帮助)。最简单的方法是什么?我看过Direct X,到目前为止已经有了一些教程,并绘制了一些基本的三角形。但是我找不到一个简单的(绘制点)。
答案 0 :(得分:1)
DirectX没有只绘制一个点的功能。它仅在顶点和索引缓冲区上运行。如果你想要更简单的方法来制作一个点,你需要写一个包装器 要绘制点列表,您需要使用DrawPrimitive(D3DPT_POINTLIST,...)。然而,没有简单的方法来绘制一个点。你必须准备缓冲区,锁定它,填充数据,然后绘制缓冲区。或者您可以使用动态顶点缓冲区 - 以优化性能。有一个DrawPrimitiveUP调用应该能够渲染存储在系统内存中的基元(而不是使用缓冲区),但据我所知,它不能用pure devices工作(可能会默默地丢弃基元),所以你必须使用软件顶点处理。
在OpenGL中,您有glVertex2f和glVertex3f。你的调用看起来像这样(可能有拼写错误或语法错误 - 我没有编译/运行它):
glBegin(GL_POINTS);
glColor3f(1.0, 1.0, 1.0);//white
for (int y = 0; y < height; y++)
for (int x = 0; x < width; x++)
glVertex2f(points[y][x].x, points[y][x].y);//plot point
glEnd();
OpenGL比DirectX更容易玩游戏和试验。我建议您查看SDL,并将其与OpenGL结合使用。或者您可以使用GLUT而不是SDL。
或者您可以尝试使用Qt 4.它有一个非常好的2D渲染例程。
答案 1 :(得分:1)
当我第一次涉足游戏/图形编程时,我变得喜欢Allegro。它具有广泛的功能和非常简单的学习曲线。