LINUX.ORG.RU

[OpenGL] Туплю :/


0

0

Есть следующий код:

#include <stdio.h>
#include <GL/glut.h>
#include <stdlib.h>
struct ProgData {
int width;
int height;
};
ProgData pdata;

void DisplayFunc(void){
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glLoadIdentity();
float deep = -1.3f; //!!!
glBegin(GL_LINES);
glColor3f(1.0f,1.0f,0.0f);
glVertex3f(pdata.width/2,0,deep);
glVertex3f(pdata.width/2,pdata.height,deep);
glVertex3f(0,pdata.height/2,deep);
glVertex3f(pdata.width,pdata.height/2,deep);
glEnd();
// glFinish();
glPopMatrix();
glutSwapBuffers();
}

void KeyboardFunc( unsigned char key, int x, int y){
printf(" %c - %d - %d \n",key,x,y);
}

void ReshapeFunc(GLint width, GLint height){
pdata.width = width;
pdata.height = height;
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, 0, height, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glutPostRedisplay();
}

void MouseFunc(int button, int up, int x, int y){
// Button
// 0 - Left.
// 2 - Right
// 3 - Wheel up
// 4 - Wheel down
// 1 - Wheel press
//
// up -
// on mouse down - 0
// on mouse up - 1
//printf("%d %d %d %d\n",x,y,a,b);

}
int main(int argc, char *argv[]){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(320, 240);
pdata.width = 320;
pdata.height = 240;
glutCreateWindow("Splines");
glutDisplayFunc(DisplayFunc);
glutReshapeFunc(ReshapeFunc);
glutKeyboardFunc(KeyboardFunc);
glutMouseFunc(MouseFunc);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_FLAT);
glDepthFunc(GL_LESS);
glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);
glutMainLoop();
return 0;
}

В функции DisplayFunc есть переменная float deep, суть в том, что если я устанавливаю ее в значение от -1..0, линии рисуются нормально.
Если устанавливаю в -1...-(бесконечность), линий не вижу :\.
Как только не извращался, не могу понять почему.
Также если устанавливаю эту переменную в ноль и делаю glTranslatef в z на больше чем -1, все опять не прорисовывается.
В чем проблема?


Re: [OpenGL] Туплю :/

glOrtho(0, width, 0, height, -1.0, 1.0);

и внимательно читать про область отсечения

generatorglukoff ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.