|
С# Средство разработки на платформе .Net |
14.11.2010, 21:10
|
#1
|
Дэвелопер
Регистрация: 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(255, 255, 255, 1); // установка порта вывода в соотвествии с размерами элемента anT Gl.glViewport(0, 0, AnT.Width, AnT.Height); // настройка проекции Gl.glMatrixMode(Gl.GL_PROJECTION); Gl.glLoadIdentity(); Glu.gluOrtho2D(0.0, 100.0, 100.0, 0.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(0, 75); Gl.glVertex2d(75, 75); Gl.glVertex2d(75, 0); Gl.glEnd(); Gl.glBegin(Gl.GL_POLYGON); Gl.glColor4d(0, 1, 0, 0.5); Gl.glVertex2d(100, 100); Gl.glVertex2d(100, 25); Gl.glVertex2d(25, 25); Gl.glVertex2d(25, 100); Gl.glEnd(); // дожидаемся завершения визуализации кадра Gl.glFlush(); // обновляем изображение в элементе AnT AnT.Invalidate();
(AnT - это компонент на форме, куда картинка отрисовывается)
|
(Offline)
|
|
14.11.2010, 21:25
|
#2
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Не работает альфа
А где включение блендинга?
Смотри в сторону функций glAlphaFunc, glBlendFunc
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.11.2010, 22:01
|
#3
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Не работает альфа
Всё, разобрался:
надо гденибуть вначале поставить-
Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); // - режим блендинга Gl.glEnable(Gl.GL_BLEND); // - включить блендинг
|
(Offline)
|
|
15.11.2010, 22:23
|
#4
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Не работает альфа
public Form1() { InitializeComponent(); engine.Init(AnT); Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); Gl.glEnable(Gl.GL_BLEND); } private void AnT_Load(object sender, EventArgs 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(50, 50, 1); Gl.glScaled(r.NextDouble(), r.NextDouble(),1); Gl.glRotated(i, 0, 0, 1); Gl.glBegin(Gl.GL_POLYGON); Gl.glColor4d(1, 0, 0, 0.1); Gl.glVertex2d(-25, -25); Gl.glColor4d(0, 1, 0, 0.1); Gl.glVertex2d(-25, 25); Gl.glColor4d(0, 0, 1, 0.1); Gl.glVertex2d(25, 25); Gl.glColor4d(1, 1, 1, 0.1); Gl.glVertex2d(25, -25); Gl.glEnd(); Gl.glPopMatrix(); Gl.glFlush(); AnT.Invalidate(); }
вот чать кода. поток th выполняется, но на компоненте AnT нифига не отрисовывается!
--------------------
UPD- вот с геймдева цитата
Спец
У опенжл большие проблемы с работой в многопоточности, точнее с работой из не основного потока приложения.
100% безопасно его можно использовать только в основном потоке. Иначе - жди сюрпризов, даже если у тебя и заработает у людей с другим софтом/хардом возможно работать не будет.
|
какая жаль
|
(Offline)
|
|
16.11.2010, 11:01
|
#5
|
Unity/C# кодер
Регистрация: 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)); }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.11.2010, 13:48
|
#6
|
Бывалый
Регистрация: 19.06.2008
Сообщений: 679
Написано 264 полезных сообщений (для 450 пользователей)
|
Ответ: Не работает альфа
Den
Глянь OpenTK там был пример работы winforms + opengl
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.11.2010, 19:05
|
#7
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Не работает альфа
Как в .Net или в Glut определить насколько повернулось колёсико мышы?
В Glut есть что то содержащие в названии MouseWheel, но я немогу понять как этим пользоватся
|
(Offline)
|
|
21.11.2010, 20:27
|
#8
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Не работает альфа
На сколько повернулось определить нельзя, там шаги в каких-то единицах. Если колесо повернулось вперед: например значение 120, назад -120.
|
(Offline)
|
|
21.11.2010, 20:45
|
#9
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Не работает альфа
Сообщение от pax
На сколько повернулось определить нельзя, там шаги в каких-то единицах. Если колесо повернулось вперед: например значение 120, назад -120.
|
А как?
Как хоть чтонибуть узнать о колёсике? С помощью чего?
|
(Offline)
|
|
21.11.2010, 21:46
|
#10
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Не работает альфа
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.11.2010, 21:21
|
#11
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Не работает альфа
как плавно искревить матрицу (часть матрицы)?
В голову пришло только при помощи glTranslate двигать кусочки матрицы на плавно изменяющееся значение.
|
(Offline)
|
|
27.11.2010, 21:23
|
#12
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Не работает альфа
Что подразумевается под "искривить матрицу"?
|
(Offline)
|
|
27.11.2010, 22:07
|
#13
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Не работает альфа
то что на картинке
|
(Offline)
|
|
27.11.2010, 23:55
|
#14
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Не работает альфа
На картинке изображена сетка, что за сетка?
|
(Offline)
|
|
28.11.2010, 11:43
|
#15
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Не работает альфа
Den, вот это - матрица
И вот это - тоже матрица
И даже это - матрица
А у тебя сто раз нарисованный график функции y=ax^2+bx+c и график х=1
Последний раз редактировалось Reks888, 28.11.2010 в 14:10.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:16.
|