您可以設置投影,將地圖的頂點座標1:1像素座標:
glViewport(0, 0, window_width, window_height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, window_width, 0, window_height, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
從這裏開始,頂點X,Y座標是在左下角的原點像素。理論上你可以使用GL_POINT原語的直接模式。但是批量處理是一個更好的主意。相反發送各點來逐個創建所有你想畫點的數組:
struct Vertex
{
GLfloat x,y,red,green,blue;
};
std::vector<Vertex> vertices;
/* fill the vertices vector */
這個你可以OpenGL的點...
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
/* Those next two calls don't copy the data, they set a pointer, so vertices must not be deallocated, as long OpenGL points to it! */
glVertexPointer(2, GL_FLOAT, sizeof(Vertex), &vertices[0].x);
glColorPointer(3, GL_FLOAT, sizeof(Vertex), &vertices[0].red);
...並把它接入和平局這一切單個電話:
glDrawArrays(GL_POINTS, 0, vertices.size();
順便說一下,OpenGL 1.0聽起來可能是最基本的,但實際上OpenGL 1.1實際上是最不常見的分母。我從來沒有見過一個平臺不支持至少1.1(並且是軟件)。在1.0中你沒有紋理對象,也沒有頂點數組。 –
好吧,tnx多,它很好知道 –