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