#11
15 июля 2009 в 07:58
не полигон а квад состоящий из двух трианглоф<br />как вариант погляди как сделана вспышка в ку3<br />конус без "крышки", острие которого смотрит в ствол
#12
15 июля 2009 в 09:49
Погляжу. Наверное этот конус "вырастает" из ствола как функция от таймера?
#13
15 июля 2009 в 11:09
нет он сразу появляется целиком как я помню
#14
23 июля 2009 в 09:04
Возникла небольшая проблема с текстурированием - текстура успешно грузится из файла, но не "натягивается" на объект, цилиндр (квадрик). <br />Была ещё проблема с загрузкой *.bmp из файлов, потому что функция из библиотеки glaux.lib (auxDIBImageLoad) отказывалась прилинковываться моим любимым компилятором Borland C Compiler 5.5 (сообщение: неверный OMF формат, код 0х21, возможно COFF), а утилитами implib.exe и coff2omf.exe я ничего добиться не смог. <br />Именно по-этому пришлось частично спереть с Гугла и частично дописать самому соответствующую функцию, которая читает bitmap-изображения. <br /><br />Зацените пожалуйста фрагменты кода: <br /><br />
/* ГРУЗИМ БИТМАП ИЗ ФАЙЛА И "ПРИВЯЗЫВАЕМ" ТЕКСТУРУ */<br />int myLoadBitmap(char *filename) <br />{ <br /> int i, j=0;<br /> int num_texture = -1;<br /> FILE *l_file; <br /> unsigned char *l_texture;<br /> BITMAPFILEHEADER fileheader; <br /> BITMAPINFOHEADER infoheader;<br /> RGBTRIPLE rgb;<br /> num_texture++;<br /> if((l_file = fopen(filename,"rb"))==NULL) <br /> return (-1);<br /> fread(&fileheader, sizeof(fileheader), 1, l_file);<br /> fseek(l_file, sizeof(fileheader), SEEK_SET);<br /> fread(&infoheader, sizeof(infoheader), 1, l_file);<br /> l_texture = (byte *)malloc(infoheader.biWidth*infoheader.biHeight*4);<br /> memset(l_texture, 0, infoheader.biWidth*infoheader.biHeight*4);<br /> for(i=0; i<infoheader.biWidth*infoheader.biHeight; i++)<br /> {<br /> fread(&rgb, sizeof(rgb), 1, l_file);<br /> l_texture[j+0] = rgb.rgbtRed;<br /> l_texture[j+1] = rgb.rgbtGreen;<br /> l_texture[j+2] = rgb.rgbtBlue;<br /> l_texture[j+3] = 255;<br /> j+=4;<br /> } <br /> fclose(l_file);<br /> glBindTexture(GL_TEXTURE_2D, num_texture);<br /> glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);<br /> glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);<br /> glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);<br /> glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);<br /> glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);<br /> glTexImage2D(GL_TEXTURE_2D, 0, 4, infoheader.biWidth, infoheader.biHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, l_texture);<br /> gluBuild2DMipmaps(GL_TEXTURE_2D, 4, infoheader.biWidth, infoheader.biHeight, GL_RGBA, GL_UNSIGNED_BYTE, l_texture);<br /> free(l_texture);<br /> return (num_texture); <br />}<br /><br />/* ИСПОЛЬЗУЕМ ВЫШЕУКАЗАННУЮ ФУНКЦИЮ ПРИМЕНИТЕЛЬНО К ЦИЛИНДРУ (БАРАБАН В МОДЕЛИ РЕВОЛЬВЕРА) */<br />void baraban()<br />{<br /> int texture = myLoadBitmap("..\\textures\\baraban.bmp");<br /> if (!texture) <br /> {<br /> printf ("Texture did not load\n");<br /> glutDestroyWindow(win);<br /> exit(0);<br /> }<br /> /*------------------------------------------------------------------------------*/<br /> glPushMatrix();<br /> glRotatef(90.0, 0.0, 1.0, 0.0);<br /> /*------------------------------------------------------------------------------*/<br /> glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);<br /> glEnable(GL_TEXTURE_2D); /* АКТИВИРОВАТЬ */<br /> gluCylinder(b, 1.0, 1.0, 2.0, 10, 10); <br /> glDisable(GL_TEXTURE_2D); /* ДЕАКТИВИРОВАТЬ */<br /> /*------------------------------------------------------------------------------*/<br /> gluDisk(d, 0.0, 1.0, 10, 2);<br /> glTranslatef(0.0, 0.0, 2.0);<br /> gluDisk(d, 0.0, 1.0, 10, 2);<br /> glPopMatrix();<br />}
<br /><br />В чём может быть проблема? <br /><br />Полный исходник по ссылке: <br />http://depositfiles.com/files/kglrxfkm3
#15
24 июля 2009 в 09:18
возьми опенИЛ и не парься с загрузкой текстур ;D
#16
25 июля 2009 в 10:56
Да я бы рад заюзать опен-сорс либу, но боюсь препод не оценит. К тому же я куеву тучу времени потратил зря чтобы эту ошибку устранить ...