Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Программирование графики > C# openGL (tao framewok) наложение текстуры на сферу |
Автор: Demon2 06.04.10, 14:32 |
Для загрузки использую такой код: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 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); } } Вывожу так: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 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 (Икс на синем фоне) Почему отображается вот с такими проблемами? При повороте сферы glRotate текстура отображается нормально, как на скрине или вообще пропадает. |
Автор: OpenGL 07.04.10, 07:04 |
Подобные артефакты могут возникать при включенном depth test, если забываешь очищать depth buffer. Проверь, очищаешь ли ты его. |
Автор: Demon2 07.04.10, 17:32 |
Добавил Gl.glEnable(Gl.GL_DEPTH_TEST); и всё стало нормально. Просто я ещё новичок в этом деле Ощищать-то - очищал, а что включить надо его - незнал. Спасибо |