主题:这个程序中如何实现输入两点 画直线?
我的想法是从屏幕输入起始 终止点的坐标然后画出直线。但不知道怎么实现。
只会如下面那样 在程序中指定起始 终止坐标。(使用全局变量除外)
#include <gl/glut.h>
void myDisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.9f, 0.0f, 0.0f);
glPointSize(3);
glBegin(GL_LINES);
glVertex2i(10,10);
glVertex2i(100,100);
glEnd();
glFlush();
}
void ChangeSize(GLsizei width, GLsizei Height)
{
GLfloat aspectRatio;
if (Height == 0) {
Height = 1;
}
glViewport(0, 0, width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
aspectRatio = (GLfloat)width / (GLfloat) Height;
if (width <= Height) {
glOrtho(0.0f, 150.0f, 0.0f/aspectRatio, 150.0f/aspectRatio, 1.0, -1.0);
}
else{
glOrtho(0.0f*aspectRatio, 150.0f*aspectRatio, 0.0f, 150.0f, 1.0, -1.0);
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(300, 300);
glutCreateWindow("例子");
glutDisplayFunc(myDisplay);
glutReshapeFunc(ChangeSize);
glutMainLoop();
return 0;
}
[em18][em18][em18]
只会如下面那样 在程序中指定起始 终止坐标。(使用全局变量除外)
#include <gl/glut.h>
void myDisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.9f, 0.0f, 0.0f);
glPointSize(3);
glBegin(GL_LINES);
glVertex2i(10,10);
glVertex2i(100,100);
glEnd();
glFlush();
}
void ChangeSize(GLsizei width, GLsizei Height)
{
GLfloat aspectRatio;
if (Height == 0) {
Height = 1;
}
glViewport(0, 0, width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
aspectRatio = (GLfloat)width / (GLfloat) Height;
if (width <= Height) {
glOrtho(0.0f, 150.0f, 0.0f/aspectRatio, 150.0f/aspectRatio, 1.0, -1.0);
}
else{
glOrtho(0.0f*aspectRatio, 150.0f*aspectRatio, 0.0f, 150.0f, 1.0, -1.0);
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(300, 300);
glutCreateWindow("例子");
glutDisplayFunc(myDisplay);
glutReshapeFunc(ChangeSize);
glutMainLoop();
return 0;
}
[em18][em18][em18]