我的OpenGL窗口大小调整问题

5

我想将我的窗口大小设置为(800,800),但是GL命令

glutInitWindowSize(800, 500); 

这并不会以任何方式影响我的代码。以下是源代码的全部内容。

#include <stdio.h>
#include <stdlib.h>
#include <X11/X.h>
#include <X11/Xlib.h>
#include <GL/gl.h>
#include <GL/glx.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <iostream>
#include <math.h>
using namespace std;

struct point{

GLfloat x;
GLfloat y;

};

float a,b;

void initGL() {
   // Set "clearing" or background color
   glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Black and opaque
}

/* Handler for window-repaint event. Call back when the window first appears and
   whenever the window needs to be re-painted. */
void display() {
   glClear(GL_COLOR_BUFFER_BIT);   // Clear the color buffer with current clearing color
//  glutInitWindowSize(800, 800); 

float i;
float radians;
struct point graph[1000];
struct point graphC[1000];

for(i = 0.0; i < 1000.0; i++) {
  graph[(int)i].x = i/1000.0;
  graph[(int)i].y = sqrt(pow(i/100,3) + a*i/100.0 + b)/10.0;
  graphC[(int)i].x = i/1000;
  graphC[(int)i].y = -1*sqrt(pow(i/100,3) + a*i/100.0 + b)/10.0;
}

glBegin(GL_POINTS);

for(int j = 0; j < 1000; j ++){
    glColor3f(1.0f, 0.0f, 0.0f);
    glVertex2f(graph[j].x,graph[j].y);
    glColor3f(1.0f, 0.0f, 0.0f);
    glVertex2f(graphC[j].x,graphC[j].y);
}

glEnd();

for(i = 0.0; i > -1000.0; i--) {
  graph[-1*(int)i].x = i/1000.0;
  graph[-1*(int)i].y = sqrt(pow(i/100,3) + a*i/100.0 + b)/10.0;
  graphC[-1*(int)i].x = i/1000;
  graphC[-1*(int)i].y = -1*sqrt(pow(i/100,3) + a*i/100.0 + b)/10.0;
}

glBegin(GL_POINTS);

for(int j = 0; j < 1000; j ++){
    glColor3f(1.0f, 0.0f, 0.0f);
    glVertex2f(graph[j].x,graph[j].y);
        glColor3f(1.0f, 0.0f, 0.0f);
        glVertex2f(graphC[j].x,graphC[j].y);
    }

    glEnd();

   glFlush();  // Render now

}

/* Main function: GLUT runs as a console application starting at main()  */
int main(int argc, char** argv) {
cout<<"Please enter in a\n";
cin>>a;
cout<<"Please enter in b\n";
cin>>b;
   glutInit(&argc, argv);          // Initialize GLUT
   glutCreateWindow("Scientific Plot");  // Create window with the given title
   glutInitWindowSize(800, 500);   // Set the window's initial width & height
   glutInitWindowPosition(400, 400); // Position the window's initial top-left corner
   glutDisplayFunc(display);       // Register callback handler for window re-paint event
   initGL();                       // Our own OpenGL initialization
   glutMainLoop();                 // Enter the event-processing loop
   return 0;
}
1个回答

12

glutInitWindowSize这样的命令需要在调用glutCreateWindow之前调用,否则它们将无效。您可以通过调用glutReshapeWindow来更改窗口的大小。


1
OpenGL教程中的GL01Hello.cpp实际上提供了一个与此相反的示例,但由于这个确切的原因,它对我不起作用。 - mazunki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接