有人能告诉我如何在坐标处绘制一个白色像素,比方说(100,200)?
我正在使用GLUT,到目前为止已经找到了如何打开一个空白窗口.一旦我弄清楚如何绘制像素,我将使用它来实现Bresenham线条绘制算法.(是的,我知道OpenGL可以绘制线条.我需要自己实现).
#include <stdio.h>
#include <GL/glut.h>
static int win(0);
int main(int argc, char* argv[]){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE);
glutInitWindowSize(500,500);
glutInitWindowPosition(100,100);
//step 2. Open a window named "GLUT DEMO"
win = glutCreateWindow("GLUT DEMO");
glClearColor(0.0,0.0,0.0,0.0); //set background
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
glutMainLoop();
}
Run Code Online (Sandbox Code Playgroud)
qua*_*fly 17
这是一段神奇的代码,花了一整天的时间阅读stackoverflow并观看youtube教程来学习:
glVertex2i(x,y);
以下是它需要工作的上下文:
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(80, 80);
glutInitWindowSize(500,500);
glutCreateWindow("A Simple OpenGL Program");
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluOrtho2D( 0.0, 500.0, 500.0,0.0 );
glBegin(GL_POINTS);
glColor3f(1,1,1);
glVertex2i(100,100);
glEnd();
Run Code Online (Sandbox Code Playgroud)
这可以通过设置剪刀矩形,然后清除来轻松完成,这只会清除剪刀矩形中的指定区域。例如:
glEnable(GL_SCISSOR_TEST);
glScissor(100, 200, 1, 1);
glClearColor(1,1,1,1);
glClear(GL_COLOR_BUFFER_BIT);
// Remember to disable scissor test, or, perhaps reset the scissor rectangle:
glDisable(GL_SCISSOR_TEST);
Run Code Online (Sandbox Code Playgroud)