Привет всем! Проблема в следующем: делаю лабу по OpenGL взял код из примера (он правда кривой, но рабочий), запустил на своей машине, оказалось что текстуры не отображаются, а вот на чужой машине все работает отлично... В чем может быть проблема, что то с видеокартой? Драйвера поставились вместе с вистой, видеокарта ATI RADEON XPRESS 1100. Скачал драйвера на оф сайте, поставил и сейчас проект при запуске вылетает сразу... Что делать? Вот код на всякий случай: lab.h
| Код | // включаем файл для работы с Windows #include <windows.h> // подключаем заголовочные файлы библиотеки OpenGL #include <gl\gl.h> #include <gl\glu.h> #include <gl\glaux.h> // запрещаем вывод предупреждений о преобразовании данных #pragma warning(disable : 4305) // #pragma warning(disable : 4244) // static void Init(void ); // функция инициализации //функция отслеживание изменения размеров окна static void CALLBACK Reshape(int width,int height); static void CALLBACK Draw(void ); //функция рисования static void CALLBACK KeyDown() {}; //функция обработки нажатия клавиши
|
lab.cpp
| Код | //подключаем заголовочный файл проекта #include "laba_4.h" #include "3dmath.h" #include <math.h>
#pragma comment(lib, "opengl32.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "glaux32.lib")
GLint windW, windH; AUX_RGBImageRec *back_img; AUX_RGBImageRec * photo_img; unsigned int photo_tex; unsigned int back_tex; // Функция, которая инициализирует все параметры static void Init(void) { back_img=auxDIBImageLoad("back.bmp"); photo_img=auxDIBImageLoad("photo.bmp"); glGenTextures(1,&photo_tex); glGenTextures(1,&back_tex); glBindTexture(GL_TEXTURE_2D, photo_tex); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexImage2D(GL_TEXTURE_2D, 0, 3, photo_img->sizeX, photo_img->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, photo_img->data); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); glBindTexture(GL_TEXTURE_2D, back_tex); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexImage2D(GL_TEXTURE_2D, 0, 3, back_img->sizeX, back_img->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, back_img->data); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); } // Функция исполняемая при изменении окна static void CALLBACK Reshape(int width, int height) { windW = (GLint)width; windH = (GLint)height; glViewport(0,0,width,height); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); glOrtho(-5,5, -5,5, -10,12); gluLookAt( 0,0,5, 0,0,0, 0,1,0 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); glPushMatrix(); } // Функция визуализации рисунка static void CALLBACK Draw(void) { glEnable(GL_CULL_FACE); glLoadIdentity(); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_TEXTURE_2D); glColor3d(1,0,0); glBindTexture(GL_TEXTURE_2D, back_tex); glBegin (GL_QUADS); glTexCoord2d(0,0); glVertex3d(-5,-5,-1); glTexCoord2d(1,0); glVertex3d( 5,-5,-1); glTexCoord2d(1,1); glVertex3d( 5, 5,-1); glTexCoord2d(0,1); glVertex3d(-5, 5,-1); glEnd(); GLUquadricObj *quadObj; quadObj = gluNewQuadric(); glPopMatrix(); glBindTexture(GL_TEXTURE_2D, photo_tex); gluQuadricTexture(quadObj, GL_TRUE); gluQuadricDrawStyle(quadObj, GLU_FILL); glColor3d(0,0,1); glRotated(1,-1,1,1); gluSphere(quadObj,2,20,20); gluDeleteQuadric(quadObj); glDisable(GL_TEXTURE_2D); glDisable(GL_CULL_FACE); glPushMatrix(); auxSwapBuffers(); }
// главная функция - точка входа в программу void main(int argc, char **argv) { windW = 512; windH = 512; auxInitPosition(10, 10, windW, windH); auxInitDisplayMode( AUX_RGB | AUX_DEPTH | AUX_DOUBLE ); if(auxInitWindow("Лабораторная работа НАЛОЖЕНИЕ ТЕКСТУР") == GL_FALSE) { auxQuit();} Init(); auxIdleFunc(Draw); auxReshapeFunc((AUXRESHAPEPROC)Reshape); auxMainLoop(Draw); }[S][/S]
|
|