/***************************************************************************
main.cpp - description
-------------------
begin : Пнд Сен 15 23:30:09 MSD 2003
copyright : (C) 2003 by Alexandr
email : _cyclon_@mtu.ru
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream.h>
#include <stdlib.h>
#include "bmp.h"
#include "GL/glut.h"
#include "GL/gl.h"
#include "GL/glu.h"
#include <math.h>
GLdouble angel; //angel of rotated
GLdouble k = 8; //size
tagBITMAPFILEHEADER bmpFileHeader;
tagBITMAPINFOHEADER bmpInfoHeader;
int file_bmp,nCol,nRow,col;
tagRGBQUAD* flat;
tagRGBQUAD p;
char* pathFile;
void readFile(void)
{
file_bmp = open (pathFile, O_RDONLY);
read (file_bmp, &bmpFileHeader, 14);
read (file_bmp, &bmpInfoHeader, 40);
nCol = bmpInfoHeader.biWidth;
nRow = bmpInfoHeader.biHeight;
col = nRow*nCol;
flat = new tagRGBQUAD[col];
int n = 0;
for (int y = nRow; y > 0; y--)
{
for (int x = 0; x < nCol; x++)
{
read (file_bmp, &p, sizeof(p));
flat[n].b = (int)p.r;
flat[n].g = (int)p.g;
flat[n].r = (int)p.b;
n++;
}
}
}
void setTexture (void)
{
glMatrixMode( GL_MODELVIEW );
glTexImage2D(GL_TEXTURE_2D, 0, 3, nCol, nRow, 0, GL_RGB, GL_UNSIGNED_BYTE,flat);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
glShadeModel(GL_FLAT);
}
void Init (void)
{
glMatrixMode(GL_PROJECTION);
gluPerspective(20.0, 1.0, 1.0, 30.0);
glMatrixMode(GL_MODELVIEW);
gluLookAt(0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.);
glOrtho(-12,12, -12,12, -20,20);
glEnable(GL_TEXTURE_2D);
}
void resize(int width,int height)
{
glClearColor(0.0,0.0,0.0,0.0);
glViewport(0,0,width,height);
}
void repaint(void)
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); //Function of clear window
///// Plase code here //////
setTexture();
glPushMatrix();
glBegin(GL_POLYGON);
glTexCoord2f(0.0, 0.0);
glVertex3f(-1.0*k, -1.0*k, -1.0*k);
glTexCoord2f(0.0, 1.0);
glVertex3f(-1.0*k, -1.0*k, 1.0*k);
glTexCoord2f(1.0, 1.0);
glVertex3f(1.0*k, -1.0*k, 1.0*k);
glTexCoord2f(1.0, 0.0);
glVertex3f(1.0*k, -1.0*k, -1.0*k);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0.0, 0.0);
glVertex3f(-1.0*k, 1.0*k, -1.0*k);
glTexCoord2f(0.0, 1.0);
glVertex3f(-1.0*k, 1.0*k, 1.0*k);
glTexCoord2f(1.0, 1.0);
glVertex3f( 1.0*k, 1.0*k, 1.0*k);
glTexCoord2f(1.0, 0.0);
glVertex3f( 1.0*k, 1.0*k, -1.0*k);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0.0, 0.0);
glVertex3f(-1.0*k, -1.0*k, -1.0*k);
glTexCoord2f(0.0, 1.0);
glVertex3f(-1.0*k, 1.0*k, -1.0*k);
glTexCoord2f(1.0, 1.0);
glVertex3f( 1.0*k, 1.0*k, -1.0*k);
glTexCoord2f(1.0, 0.0);
glVertex3f( 1.0*k, -1.0*k, -1.0*k);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0.0, 0.0);
glVertex3f(-1.0*k, -1.0*k, -1.0*k);
glTexCoord2f(0.0, 1.0);
glVertex3f(-1.0*k, 1.0*k, -1.0*k);
glTexCoord2f(1.0, 1.0);
glVertex3f( -1.0*k, 1.0*k, 1.0*k);
glTexCoord2f(1.0, 0.0);
glVertex3f( -1.0*k, -1.0*k, 1.0*k);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0.0, 0.0);
glVertex3f(-1.0*k, -1.0*k, 1.0*k);
glTexCoord2f(0.0, 1.0);
glVertex3f(-1.0*k, 1.0*k, 1.0*k);
glTexCoord2f(1.0, 1.0);
glVertex3f( 1.0*k, 1.0*k, 1.0*k);
glTexCoord2f(1.0, 0.0);
glVertex3f( 1.0*k, -1.0*k, 1.0*k);
glEnd();
glBegin(GL_POLYGON);
glTexCoord2f(0.0, 0.0);
glVertex3f(1.0*k, -1.0*k, 1.0*k);
glTexCoord2f(0.0, 1.0);
glVertex3f(1.0*k, 1.0*k, 1.0*k);
glTexCoord2f(1.0, 1.0);
glVertex3f( 1.0*k, 1.0*k, -1.0*k);
glTexCoord2f(1.0, 0.0);
glVertex3f( 1.0*k, -1.0*k, -1.0*k);
glEnd();
glPopMatrix();
///////////////////////////////////////////
glutSwapBuffers();
}
void timer(int value)
{
glutPostRedisplay(); //Reshape function
glutTimerFunc(10, timer, 0); //Create loop of timers
angel = 1;
glRotated(angel,1,0,0);
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
pathFile = "/home/alexandr/Documents/Coding/C++/MyProjects/textures/textures/_24b.bmp& quot;;
readFile();
glutInitWindowSize(500, 550); //Position and
glutInitWindowPosition(100, 100); // size of window
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE ); //Mode of MainWindow
glutCreateWindow(" Created by Cyclon (_cyclon_@mtu.ru) "); //Create window with Caption
Init(); //Initalization function
glutReshapeFunc(resize); //Function for reshape
glutDisplayFunc(repaint); //Function for resize
glutTimerFunc(25, timer, 0); //Timer with 25ms interval
glutMainLoop(); //Just run main loop
return 0;
}
Есть такой код но после компиляции и запуска у меня эта байда начинает безбожно тормозить, что тем более странно ведь дрова от нвидии стоят и игрушки по типу туксрейсера не тормозят а прога проще которой только апельсин так тормозит.
Компилю с ключами -lGL -lGLU -lglut, один чел сказал что нужны какието особые ключи но он не знает какие, так ли это и как поправить эту ситуацию.
Заранее спасибо!!!
Ответ на:
комментарий
от cyclon
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от cyclon
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Почему не накладывается текстура? (2003)
- Форум Привидите пожалуйсто рабочий код или покажите ошибку. (2003)
- Форум OpenGL: Текстура вращается как бешеная (2015)
- Форум OpenGL: просмотр JPEG (2011)
- Форум Элементарное: Не могу отобразить текстурированный прямоугольник в OpenGL (2019)
- Форум Segmentation fault при чтении файла. (2003)
- Форум OpenGL: освещение (2005)
- Форум QtOpenGL. Почему-то сегфолтится на glBegin() (2011)
- Форум обратная сторона плоскости (2015)
- Форум OpenGl не корректно отображает картинку (2015)