Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 01.02.2016
Сообщений: 31
1

Не могу загрузить/отобразить текстуры. Что не так?

18.06.2019, 15:12. Показов 1020. Ответов 5

Ранее уже не раз работал с текстурами и все "прокатывало" на "ура" - текстуры грузились/отображались. Создал новый проект и не могу отобразить ни одной текстуры. Подскажите, что не так? Что я не понимаю? Выкладываю весь проект, потому как ошибки могут быть как в настройке Tao, так и в загрузке и отображении текстуры. Писан на C# в VisualStudio2017. Настройка OpenGL осуществляется в модуле frmFloat. При нажатии кнопки "Добавить подложку" по экрану загружаю саму подложку (текстуру) в классе Working_Mouse_Sub. Отображаю текстуру в классе Painting_Sub. Для хранения различных переменных использую ступенчатый массив scenarioArray. Файл с проектом приложен. Спасибо всем кто откликнется.
0
Вложения
Тип файла: rar IndiLineEvac.rar (746.4 Кб, 1 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2019, 15:12
Ответы с готовыми решениями:

Как загрузить текстуры на объект? (Unity 3d)
Привет. Я скачал с Asset store несколько текстур, но как их загрузить на объект не знаю, не могу...

Как загрузить текстуры в видео память и передать их в пиксельный буфер?
Я использую SDL 2, но в одном моменте решил использовать чистый OpenGL, потому что не нашёл, как...

не могу понять что не так(((((
привет всем! у меня проблемка возникла компиятор никак не проглатывает мой код #include <iostream>...

Не могу понять, что не так
Не могу изменить вид приглашения через файл *.bat (необходимо вывести время) При вводе prompt...

5
4189 / 2295 / 388
Регистрация: 05.10.2013
Сообщений: 6,394
Записей в блоге: 177
18.06.2019, 15:29 2
Не могу у себя запустить, потому что Tao не использую. Использую OpenTK.GLControl для WinForms и WPF. Я заметил, что у вас на текстурах не установлено в свойствах "Copy if newer". Вы их вручную копируете в Debug и Release? Это ужасно неудобно. Достаточно один раз выставить опцию и текстуры будут копироваться. Работа с Tao и текстурами Tao описана подробно в этой книге: C# Game Programming: For Serious Game Creation. Там как раз используется OpenGL 1.1. Советую создать новый минимальный проект с одним квадратом и текстурой на нём, чтобы посмотреть работает ли хотя бы самый минимальный маленький проект.
0
0 / 0 / 0
Регистрация: 01.02.2016
Сообщений: 31
18.06.2019, 15:50  [ТС] 3
Ок. Спасибо за ответ. Отдельное спс за книгу. В папке Resources у меня иконки к кнопкам (позже я их все заменю на что-либо более художественное). Текстуры пользователь грузит самостоятельно в классе Propertyes.cs функцией OpenFileDialog(). Ранее уже создавал через библиотеку IL Tao разные текстуры - все работало. Но тут решил вместо glFrustum использовать glOrtho и текстуры не отобразились, причем простая векторная графика рисуется нормально. Может в настройках проекции чего не понял - не знаю.( Беда, прям.)
0
4189 / 2295 / 388
Регистрация: 05.10.2013
Сообщений: 6,394
Записей в блоге: 177
18.06.2019, 16:03 4
В таких случаях я создаю проект с нуля и начинаю поэтапно переносить из неработающего в работающий проект, до тех пор пока не перестанет работать. Буквально, если добавляешь эту строку, то перестаёт работать. Да, может времени уйдёт много, но зато какая-то полезная деятельность будет, потому что неминуемо лучше разбираться начинаешь. Главное, не добавлять сразу много. Нужно как можно ближе подойти к границе "работающий" -> "неработающий" проект. В конечном итоге должно получиться, что добавляем эту строку и проект перестаёт работать.
0
0 / 0 / 0
Регистрация: 01.02.2016
Сообщений: 31
18.06.2019, 16:07  [ТС] 5
Да, спасибо за совет. Похоже, это единственный для меня способ в чем-либо разобраться. Начну завтра. Сегодня уже голова не варит.)
0
0 / 0 / 0
Регистрация: 01.02.2016
Сообщений: 31
19.06.2019, 15:55  [ТС] 6
В общем. До чего я доковырялся. Есть у меня участок кода с загрузкой текстуры в память OpenGL:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
                    //загрузка текстуры
                    // открываем окно выбора файла
                    DialogResult res = openFileDialog1.ShowDialog();
                    // если файл выбран - и возвращен результат OK 
                    if (res == DialogResult.OK)
                    {
                        //создаем объект с идентификатором imageId
                        Il.ilGenImages(1, out imageId);
                        //делаем изображение текущим
                        Il.ilBindImage(imageId);
                        //пробуем загрузить изображение
                        if (Il.ilLoadImage(GlobalVarClass.scenarioArray[numscen].floorArray[numfloor].subArray[length].sub_URL))
                        {
                            //если загрузка прошла успешно
                            //сохраняем размеры изображения
                            int width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
                            int height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
                            GlobalVarClass.scenarioArray[numscen].floorArray[numfloor].subArray[length].SizeW = width;
                            GlobalVarClass.scenarioArray[numscen].floorArray[numfloor].subArray[length].SizeH = height;
                            //определяем число бит на пиксель
                            int bitspp = Il.ilGetInteger(Il.IL_IMAGE_BITS_PER_PIXEL);
                            switch (bitspp)//в зависимости от полученного результата
                            {
                                case 24:
                                    mGlTextureObject = MakeGlTexture(Gl.GL_RGB, Il.ilGetData(), width, height);
                                    break;
                                case 32:
                                    mGlTextureObject = MakeGlTexture(Gl.GL_RGBA, Il.ilGetData(), width, height);
                                    break;
                            }
                                //активируем флаг, что текстура загружена
                                textureIsLoad = true;
                                //очищаем память
                                Il.ilDeleteImages(1, ref imageId);
                        }
                    }
Здесь видно, что диалог openFileDialog1 никакой функциональной нагрузки на себе не несет, я его вставил для тестов. Он только позволяет выбрать пользователю некий файл и нажать кнопку "Ok". Сама же текстура грузится из переменной в массиве (GlobalVarClass.scenarioArray[numscen].floorArray[numfloor].subArray[length].sub_URL).
В итоге: текстура грузится и отображается (та-даам!). Убираю диалог с if (res == DialogResult.OK) и что? Текстуры нет! Думал, что права Админа не дают грузить текстуру с диска С, но перенос файла на диск D тоже ничего не дал. Пробовал создавать переменную типа string и прописывать путь ручками, без массива. Тоже тухляк. Что за ерунда? Есть идеи, что бы это могло быть? Как дальше двигаться с Tao если такие косяки всплывают?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2019, 15:55

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Не могу понять что не так
Помогите пожалуйста в чем там проблема?

Не могу понять что не так
При повторном нажатии на кнопку все равно выполняется informacia.LoadFromFile('C:\блаблабла.txt');...

Не могу понять что не так
В задании нужно вычислить величину S. Но результат почему-то 0. Насколько я понимаю 0 получается...

не могу понять что не так
задание такое : Структура "книга почтой":-наименование книги;-ФИО автора;-номер по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.