Ir para conteúdo
Fórum Script Brasil
  • 0

OpenGL + Glui + Glut + C++


Léo Unicap

Pergunta

Oi galera.

To com um projeto pra faculdade pra fazer mas to com um probleminha.

O projeto é basicamente o seguinte:

Usando OpenGL e C++, rasterisar na tela uma reta e uma circunferencia

de acordo com a quantidade de pixel desejada pelo usuário.

Isso já ta OK.

O meu probrela é o seguinte:

No projeto eu tenho que fazer com que quando o usuário almetar ou

diminuir o tamanho da tela, as figuras que nela estão, não podem ser

afetadas, ou seja, não podem ser almentado ou diminuidas também.

Como eu faço isso(usando OpenGL + Glui + Glut + C++)?

Vlw.

Abraços.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Dei uma olhada no link que você me mandou. É realmente muito bom, todo detalhado.

Segundo o link, a função "AlteraTamanhoJanela" é a que faz a janela ser alterada sem

alterar o conteúdo.

Implementei ela no meu código, mas quando fui rodar, o quadrado que estava

aparecendo sumiu. Se você retirar ou colocar como comentário a função "AlteraTamanhoJanela",

assim como sua chamada na "main", verá que o quadrado aparece normalmente.

Estou com o seguinte código.

Onde eu estou errando?

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <GL/glut.h>

void drawPixel(int, int);

inline int round (const float a) {
    return int (a + 0.5);
}

void Desenha(void) {

    // Limpa a janela de visualização com a cor branca
    glClearColor(1,1,1,0);
    glLineWidth(3);
    glClear(GL_COLOR_BUFFER_BIT);
    
    // Define a cor de desenho: Preto
    glColor3f(0,0,0); 
    glBegin(GL_LINE_LOOP);
        glVertex2f(-0.5, 0.5);
        glVertex2f(0.5, 0.5);
        glVertex2f(0.5, -0.5);
        glVertex2f(-0.5, -0.5); 
    glEnd();
    
    //Executa os comandos }OpenGL
    glFlush();
}


void Teclado (unsigned char key, int x, int y) {
    if (key == 27)
    exit(0);
}

// Função responsável por inicializar parâmetros e variáveis
void Inicializa(void) {
    
    // Define a janela de visualização 2D
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(-1.0,1.0,-1.0,1.0);
    glMatrixMode(GL_MODELVIEW);
}

//Função callback chamada quando alterar o tamanho da janela
void AlteraTamanhoJanela(GLsizei w, GLsizei h) {
    
    //if para evitar divisão por 0
    if(h==0)
        h=1;
    
    //Especifica as dimenções da Viewport
    glViewport(0, 0, w, h);
    
    //Inicializa o sistema de coordenadas
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    //Estabelece a janela de seleção (left, right, bottom, top)
    if(w<=h)
        gluOrtho2D (0.0f, 250.0f, 0.0f, 250.0f*h/w);
    else
        gluOrtho2D (0.0f, 250.0f*w/h, 0.0f, 250.0f);
}


int main(void) { // Programa Principal
    
    // Define do modo de operação da GLUT
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    
    // tamanho em pixels da janela
    glutInitWindowSize(400,400);
    
    // Cria a janela passando como argumento o título da mesma
    glutCreateWindow("Primeiro Programa");
    
    // Registra função de redesenho
    glutDisplayFunc(Desenha);

    //Evita que o conteúdo da janela seja alterado se a mesma for
    glutReshapeFunc(AlteraTamanhoJanela);
    
    // Registra função de teclado
    glutKeyboardFunc(Teclado);
    
    // Chama a função de inicializações
    Inicializa();
    
    // Inicia o processamento e aguarda interações do usuário
    glutMainLoop();
    
    return 0;
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...