На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> C# openGL (tao framewok) наложение текстуры на сферу
    Для загрузки использую такой код:

    ExpandedWrap disabled
      private void LoadGLTexturePartial(Bitmap textureImage, int elementIndex, bool flip)
      {
          if (flip)
          {
              textureImage.RotateFlip(RotateFlipType.Rotate180FlipX);
          }
          Rectangle rectangle = new Rectangle(0, 0, textureImage.Width, textureImage.Height);
          BitmapData bitmapData = textureImage.LockBits(rectangle, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
          GL.glBindTexture(GL.GL_TEXTURE_2D, this.texture[elementIndex]);
          GL.glTexImage2D(GL.GL_TEXTURE_2D, 0, (int)GL.GL_RGB8, textureImage.Width, textureImage.Height, 0, GL.GL_BGR_EXT, GL.GL_UNSIGNED_byte, bitmapData.Scan0);
          GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MAG_FILTER, (int)GL.GL_LINEAR);
          GL.glTexParameteri(GL.GL_TEXTURE_2D, GL.GL_TEXTURE_MIN_FILTER, (int)GL.GL_LINEAR);
          if (bitmapData != null)
          {
              textureImage.UnlockBits(bitmapData);
          }
      }


    Вывожу так:

    ExpandedWrap disabled
                  LoadTexture(new Bitmap("1.bmp"), 0, true);
                  quadr = Glu.gluNewQuadric();
                  Glu.gluQuadricTexture(quadr, Gl.GL_TRUE);
                  Gl.glEnable(Gl.GL_TEXTURE_2D);
                  Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[0]);
                  Glu.gluSphere(quadr, 0.4, 50, 50);
                  Gl.glDisable(Gl.GL_TEXTURE_2D);


    Текстура 256х256 (Икс на синем фоне)
    Почему отображается вот с такими проблемами?
    user posted image
    При повороте сферы glRotate текстура отображается нормально, как на скрине или вообще пропадает.
    Сообщение отредактировано: Demon2 -
      Подобные артефакты могут возникать при включенном depth test, если забываешь очищать depth buffer. Проверь, очищаешь ли ты его.
      Сообщение отредактировано: OpenGL -
        Добавил
        Gl.glEnable(Gl.GL_DEPTH_TEST);
        и всё стало нормально. Просто я ещё новичок в этом деле :blush:
        Ощищать-то - очищал, а что включить надо его - незнал.
        Спасибо
        Сообщение отредактировано: Demon2 -
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0243 ]   [ 16 queries used ]   [ Generated: 25.04.24, 12:23 GMT ]