Модераторы: Rickert, Alexeis, BorisVorontsov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Наложение текстурЫ на сферу, как? 
:(
    Опции темы
Elfet
  Дата 26.11.2004, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Код
//как?
GLUquadricObj *gsea;
gsea = gluNewQuadric();
glColor3f(0.2, 0.2, 1.0);
gluQuadricDrawStyle(gsea, GLU_FILL);
gluSphere(gsea, 100, 100, 100);

Вот, как наложить тексуру на эту сферу?
smile
Заранее благодарен! smile


--------------------
PM MAIL WWW Skype   Вверх
DENNN
Дата 26.11.2004, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Код

gluQuadricTexture(gsea,GL_TRUE);
gluQuadricDrawStyle(gsea, GLU_FILL);
glColor3f(0.2, 0.2, 1.0);

gluSphere(gsea, 100, 100, 100);

 gluDeleteQuadric(gsea);
  auxSwapBuffers();

PM ICQ   Вверх
Elfet
Дата 26.11.2004, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Код

gluQuadricTexture(gsea,GL_TRUE);

только вот это вставить? smile что то я не понял как наложить текстуру! smile


--------------------
PM MAIL WWW Skype   Вверх
chipset
Дата 26.11.2004, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Ну ты же сначала пробиндишь её glBindTexture ;)


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Elfet
  Дата 26.11.2004, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Код
GLUquadricObj *gsea;
gsea = gluNewQuadric();
glColor3f(0.2, 0.2, 1.0);
gluQuadricDrawStyle(gsea, GLU_FILL);
gluQuadricTexture(gsea,GL_TRUE);
glBindTexture(GL_TEXTURE_2D, texture[0]);
gluSphere(gsea, 100, 100, 100);

smile не работает, забыл я как это делается!

Это сообщение отредактировал(а) Elfet - 26.11.2004, 15:21


--------------------
PM MAIL WWW Skype   Вверх
chipset
Дата 26.11.2004, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Elfet
Пробиндь текстуру перед gluQuadricTexture(gsea,GL_TRUE);, может заработает..

Это сообщение отредактировал(а) chipset - 26.11.2004, 15:44


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
DENNN
Дата 26.11.2004, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Текстуру сначала надо загрузить smile
Что-то типа этого
Код

mytex=auxDIBImageLoad("lya-lya.bmp");
glGenTextures(1,&mytexcode);
glBindTexture(GL_TEXTURE_2D,mytexcode);
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glTexImage2D(GL_TEXTURE_2D,0,3,mytex->sizeX,mytex->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,mytex->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);


Примерно так, могу где-то ошибиться - я обычно фигурами из глюта не пользуюсь.
PM ICQ   Вверх
chipset
Дата 26.11.2004, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: нет
Всего: 165



Код

int mytexcode;
AUX_RGBImageRec image  = auxDIBImageLoad("lya-lya.bmp");
glGenTextures(1,&mytexcode);
glBindTexture(GL_TEXTURE_2D,mytexcode);
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glTexImage2D(GL_TEXTURE_2D,0,3,mytex->sizeX,mytex->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,mytex->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);

Вроде бы так..


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Elfet
Дата 26.11.2004, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



smile
да я вроде загружаю
Код
GLuint texture[3];
GLvoid LoadGLTextures()
{
// Загрузка картинки
AUX_RGBImageRec *texture1;
   texture1 = auxDIBImageLoad("data/textures/sphere.bmp");
// Создание текстуры
glGenTextures(1, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);

}

может сюды чего-нибудь? :
Код
GLUquadricObj *gsea;
gsea = gluNewQuadric();
glColor3f(0.2, 0.2, 1.0);
gluQuadricDrawStyle(gsea, GLU_FILL);
gluQuadricTexture(gsea,GL_TRUE);
glBindTexture(GL_TEXTURE_2D, texture[0]);
gluSphere(gsea, 100, 100, 100);




--------------------
PM MAIL WWW Skype   Вверх
[ss]3L33T@
Дата 27.11.2004, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.10.2003
Где: Казармы

Репутация: 1
Всего: 1



Не о том вы гутаете!
Сферу надо делать самому, мат. методом, потом указывать для каждого полигона UV координаты и натягивать текстуру.
ИМХО
--------------------
Понастоящему добрый человек всегда простит и забудет вам ваше зло, но он никогда не простит и не забудет вашего добра[ss]3L33T@
PM MAIL WWW ICQ   Вверх
Elfet
Дата 27.11.2004, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



[ss]3L33T@, можешь код сферы дать?


--------------------
PM MAIL WWW Skype   Вверх
[ss]3L33T@
Дата 27.11.2004, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 123
Регистрация: 14.10.2003
Где: Казармы

Репутация: 1
Всего: 1



Код

void BornASurface(unsigned int w, unsigned int l, float scalex, float scalez)
{
unsigned int i, j, k;
k = 0;
for(i = 0; i < unsigned int(w * scalez); i++)
 for (j = 0; j < unsigned int(l * scalex); j++)
 {
  polygon[k].vertex[0][0]=j/scalex;
  polygon[k].vertex[0][1]=0;
  polygon[k].vertex[0][2]=i/scalez;

  polygon[k].vertex[1][0]=j/scalex+1/scalex;
  polygon[k].vertex[1][1]=0;
  polygon[k].vertex[1][2]=i/scalez;

  polygon[k].vertex[2][0]=j/scalex+1/scalex;
  polygon[k].vertex[2][1]=0;
  polygon[k].vertex[2][2]=i/scalez+1/scalez;

  polygon[k].vertex[3][0]=j/scalex;
  polygon[k].vertex[3][1]=0;
  polygon[k].vertex[3][2]=i/scalez+1/scalez;
  k++;
 }
}

Вопросы будут - задавай.
--------------------
Понастоящему добрый человек всегда простит и забудет вам ваше зло, но он никогда не простит и не забудет вашего добра[ss]3L33T@
PM MAIL WWW ICQ   Вверх
Elfet
Дата 28.11.2004, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



smile огромное спасибо!


--------------------
PM MAIL WWW Skype   Вверх
DENNN
Дата 29.11.2004, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Это, я так понимаю, генерация апроксимирующего полигона для точки сферы?

Вот генерация сферы с текстурными координатами.

Это сообщение отредактировал(а) DENNN - 29.11.2004, 13:03
PM ICQ   Вверх
decembrist
Дата 3.12.2004, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 1.4.2004

Репутация: нет
Всего: нет



Elfet ты на чем программируешь?
Я над строчками
Цитата
GLUquadricObj *gsea;
gsea = gluNewQuadric();

уже не один день парюсь. Первая строчка проходит, а на второй виснет, зараза. Компилятор вааще игнорирует ее. smile

PM MAIL   Вверх
Elfet
Дата 3.12.2004, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



а ты подключил #pragma comment(lib, "Opengl32.lib"); #pragma comment(lib, "GLU32.lib"); pragma comment(lib, "GLaux.lib");
но как я теперь понял что с помощью квадрика не програмят =)

и у меня с
Цитата(DENNN @ 29.11.2004, 14:02)
Вот генерация сферы с текстурными координатами.

проблема: smile

Код

/*
  Create a sphere centered at c, with radius r, and precision n
  Draw a point for zero radius spheres
  Use CCW facet ordering
  "method" is 0 for quads, 1 for triangles
     (quads look nicer in wireframe mode)
  Partial spheres can be created using theta1->theta2, phi1->phi2
  in radians 0 < theta < 2pi, -pi/2 < phi < pi/2
*/
void CreateSphere(XYZ c,double r,int n,int method,
  double theta1,double theta2,double phi1,double phi2)
{
  int i,j;
  double t1,t2,t3;
  XYZ e,p;

  /* Handle special cases */
  if (r < 0)
     r = -r;
  if (n < 0)
     n = -n;
  if (n < 4 || r <= 0) {
     glBegin(GL_POINTS);
     glVertex3f(c.x,c.y,c.z);
     glEnd();
     return;
  }

  for (j=0;j<n/2;j++) {
     t1 = phi1 + j * (phi2 - phi1) / (n/2);
     t2 = phi1 + (j + 1) * (phi2 - phi1) / (n/2);

     if (method == 0)
        glBegin(GL_QUAD_STRIP);
     else
        glBegin(GL_TRIANGLE_STRIP);

     for (i=0;i<=n;i++) {
        t3 = theta1 + i * (theta2 - theta1) / n;

        e.x = cos(t1) * cos(t3);
        e.y = sin(t1);
        e.z = cos(t1) * sin(t3);
        p.x = c.x + r * e.x;
        p.y = c.y + r * e.y;
        p.z = c.z + r * e.z;
        glNormal3f(e.x,e.y,e.z);
        glTexCoord2f(i/(double)n,2*j/(double)n);
        glVertex3f(p.x,p.y,p.z);

        e.x = cos(t2) * cos(t3);
        e.y = sin(t2);
        e.z = cos(t2) * sin(t3);
        p.x = c.x + r * e.x;
        p.y = c.y + r * e.y;
        p.z = c.z + r * e.z;
        glNormal3f(e.x,e.y,e.z);
        glTexCoord2f(i/(double)n,2*(j+1)/(double)n);
        glVertex3f(p.x,p.y,p.z);

     }
     glEnd();
  }
}



что за double theta1,double theta2,double phi1,double phi2 ? smile


--------------------
PM MAIL WWW Skype   Вверх
DENNN
Дата 3.12.2004, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Там же написоанно, что используется, если необходимопостроить только часть сферы.
phi - широта (если мы говорим о земном шаре)
theta - долгота.
Соответственно ты задаешь диапазоны в угловой форме в радианах: от-до.
PM ICQ   Вверх
Elfet
Дата 6.12.2004, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



да, но зачем их по две? 1-2


--------------------
PM MAIL WWW Skype   Вверх
DENNN
Дата 6.12.2004, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 2
Всего: 43



Цитата
да, но зачем их по две? 1-2

от-до
PM ICQ   Вверх
Elfet
Дата 6.12.2004, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



ну я и дебил конечьно! smile


--------------------
PM MAIL WWW Skype   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0768 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.