Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 14.11.2010, 21:10   #1
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Смех Не работает альфа

Начал изучать OpenGL + C#. Использую TaoFramework.
Вот код. Почему у квадратов не работает альфа (прозрачность) ??
// инициализация Glut 
            
Glut.glutInit();
            
Glut.glutInitDisplayMode(Glut.GLUT_RGBA Glut.GLUT_DOUBLE Glut.GLUT_DEPTH);

            
// очитка окна 
            
Gl.glClearColor(2552552551);

            
// установка порта вывода в соотвествии с размерами элемента anT 
            
Gl.glViewport(00AnT.WidthAnT.Height);

            
// настройка проекции 
            
Gl.glMatrixMode(Gl.GL_PROJECTION);
            
Gl.glLoadIdentity();

            
Glu.gluOrtho2D(0.0100.0100.00.0);


            
Gl.glMatrixMode(Gl.GL_MODELVIEW);
            
Gl.glLoadIdentity();




            
// очищаем буфер цвета 
            
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);


            
Gl.glBegin(Gl.GL_POLYGON);
            
Gl.glColor4d(1,0,0,1);
            
Gl.glVertex2d(0,0);
            
Gl.glVertex2d(075);
            
Gl.glVertex2d(7575);
            
Gl.glVertex2d(750);
            
Gl.glEnd();

            
Gl.glBegin(Gl.GL_POLYGON);
            
Gl.glColor4d(0100.5);
            
Gl.glVertex2d(100100);
            
Gl.glVertex2d(10025);
            
Gl.glVertex2d(2525);
            
Gl.glVertex2d(25100);
            
Gl.glEnd();

            
// дожидаемся завершения визуализации кадра 
            
Gl.glFlush();

            
// обновляем изображение в элементе AnT 
            
AnT.Invalidate(); 
(AnT - это компонент на форме, куда картинка отрисовывается)
(Offline)
 
Ответить с цитированием
Старый 14.11.2010, 21:25   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не работает альфа

А где включение блендинга?
Смотри в сторону функций glAlphaFunc, glBlendFunc
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (14.11.2010)
Старый 14.11.2010, 22:01   #3
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Не работает альфа

Всё, разобрался:
надо гденибуть вначале поставить-
Gl.glBlendFunc(Gl.GL_SRC_ALPHAGl.GL_ONE_MINUS_SRC_ALPHA); // - режим блендинга
Gl.glEnable(Gl.GL_BLEND); // - включить блендинг 
(Offline)
 
Ответить с цитированием
Старый 15.11.2010, 22:23   #4
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Не работает альфа

public Form1()
        {
            
InitializeComponent();
            
engine.Init(AnT);
            
Gl.glBlendFunc(Gl.GL_SRC_ALPHAGl.GL_ONE_MINUS_SRC_ALPHA);
            
Gl.glEnable(Gl.GL_BLEND);
        }

        private 
void AnT_Load(object senderEventArgs e)
        {
            
Thread th = new Thread(fun);
            
th.Priority ThreadPriority.Normal;
            
th.Start();
            
th.Join();
        }

        
void fun()
        {
            
int i 45;
            
Random r = new Random();
            
//Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
            
Gl.glPushMatrix();
            
Gl.glTranslated(50501);
            
Gl.glScaled(r.NextDouble(), r.NextDouble(),1);
            
Gl.glRotated(i001);
            
Gl.glBegin(Gl.GL_POLYGON);
            
Gl.glColor4d(1000.1);
            
Gl.glVertex2d(-25, -25);
            
Gl.glColor4d(0100.1);
            
Gl.glVertex2d(-2525);
            
Gl.glColor4d(0010.1);
            
Gl.glVertex2d(2525);
            
Gl.glColor4d(1110.1);
            
Gl.glVertex2d(25, -25);
            
Gl.glEnd();
            
Gl.glPopMatrix();
            
Gl.glFlush();
            
AnT.Invalidate();
        } 
вот чать кода. поток th выполняется, но на компоненте AnT нифига не отрисовывается!

--------------------

UPD- вот с геймдева цитата
Спец
У опенжл большие проблемы с работой в многопоточности, точнее с работой из не основного потока приложения.
100% безопасно его можно использовать только в основном потоке. Иначе - жди сюрпризов, даже если у тебя и заработает у людей с другим софтом/хардом возможно работать не будет.
какая жаль
(Offline)
 
Ответить с цитированием
Старый 16.11.2010, 11:01   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не работает альфа

надо изменение графического интерфейса в WinForms делать через Invoke функцию.
Попробуй так:
private delegate void OnGUI();

        public 
void FunInvoke()
        {
            
// отрисовка
        
}

        public 
void fun()
        {
            
Invoke(new OnGUI(FunInvoke));
        } 
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (16.11.2010)
Старый 16.11.2010, 13:48   #6
h1dd3n
Бывалый
 
Аватар для h1dd3n
 
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений
(для 450 пользователей)
Ответ: Не работает альфа

Den
Глянь OpenTK там был пример работы winforms + opengl
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (16.11.2010)
Старый 21.11.2010, 19:05   #7
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Не работает альфа

Как в .Net или в Glut определить насколько повернулось колёсико мышы?
В Glut есть что то содержащие в названии MouseWheel, но я немогу понять как этим пользоватся
(Offline)
 
Ответить с цитированием
Старый 21.11.2010, 20:27   #8
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не работает альфа

На сколько повернулось определить нельзя, там шаги в каких-то единицах. Если колесо повернулось вперед: например значение 120, назад -120.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 21.11.2010, 20:45   #9
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Смущение Ответ: Не работает альфа

Сообщение от pax Посмотреть сообщение
На сколько повернулось определить нельзя, там шаги в каких-то единицах. Если колесо повернулось вперед: например значение 120, назад -120.
А как?
Как хоть чтонибуть узнать о колёсике? С помощью чего?
(Offline)
 
Ответить с цитированием
Старый 21.11.2010, 21:46   #10
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не работает альфа

Вот получение эвентов в Windows.Forms
http://msdn.microsoft.com/ru-ru/libr...ousewheel.aspx
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
den (21.11.2010)
Старый 27.11.2010, 21:21   #11
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Не работает альфа

как плавно искревить матрицу (часть матрицы)?
Нажмите на изображение для увеличения
Название: Матрица.jpg
Просмотров: 1902
Размер:	56.6 Кб
ID:	11928
В голову пришло только при помощи glTranslate двигать кусочки матрицы на плавно изменяющееся значение.
(Offline)
 
Ответить с цитированием
Старый 27.11.2010, 21:23   #12
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не работает альфа

Что подразумевается под "искривить матрицу"?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 27.11.2010, 22:07   #13
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Ответ: Не работает альфа

то что на картинке
(Offline)
 
Ответить с цитированием
Старый 27.11.2010, 23:55   #14
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Не работает альфа

На картинке изображена сетка, что за сетка?
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 28.11.2010, 11:43   #15
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: Не работает альфа

Den, вот это - матрица

И вот это - тоже матрица

И даже это - матрица

А у тебя сто раз нарисованный график функции y=ax^2+bx+c и график х=1
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>

Последний раз редактировалось Reks888, 28.11.2010 в 14:10.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (28.11.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:40.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com