Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
1517 / 1081 / 152
Регистрация: 23.07.2010
Сообщений: 5,983
1

OpenTL - убрать градиентную заливку

30.03.2016, 17:21. Показов 535. Ответов 4
Метки нет (Все метки)

Сильно не пинайте плз.
кусок RenderFrame
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
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
                    GL.LoadIdentity();
                    GL.Ortho(-700.0, 700.0, -700.0, 700.0, 0.0, 700.0);
                    GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
                    GL.Color3(Color.Aqua);
                    GL.Begin(PrimitiveType.Polygon);
                    for(double alpha = 0;alpha <= 2 * Math.PI;alpha += 0.0001)
                        GL.Vertex2(250 * coeff * Math.Cos(alpha)+400, 250 * Math.Sin(alpha)-400);
                    GL.End();
                    GL.Color3(Color.Firebrick);
                    for (int i = 0; i < count; i++)
                    {
                        GL.PolygonMode(MaterialFace.FrontAndBack, i == 0 ? PolygonMode.Fill : PolygonMode.Line);
                        GL.Begin(PrimitiveType.Polygon);
                        for (double alpha = i * Math.PI / count; alpha <= (i + 1) * Math.PI / count; alpha += 0.0001)
                            GL.Vertex2(500 * coeff * Math.Cos(alpha), 500 * Math.Sin(alpha));
                        for (double alpha = (i + 1) * Math.PI / count; alpha >= i * Math.PI / count; alpha -= 0.0001)
                            GL.Vertex2(300 * coeff * Math.Cos(alpha), 300 * Math.Sin(alpha));
                        GL.End();
                    }
 
                    GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
                    GL.Color3(Color.Aqua);
                    GL.Begin(PrimitiveType.Polygon);
                    for (double alpha = 0; alpha <= 2 * Math.PI; alpha += 0.0001)
                        GL.Vertex2(250 * coeff * Math.Cos(alpha) - 400, 250 * Math.Sin(alpha));
                    GL.End();
основные настройки слизал с http://www.opentk.com/
в аттаче результат. А вот что поправить, чтобы цвета полигонов друг в друга не перетекали?
0
Миниатюры
OpenTL - убрать градиентную заливку  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2016, 17:21
Ответы с готовыми решениями:

Реализовать градиентную заливку
мне нужен метод заливки который бы получал на вход точку на изображении и заливал все от этой этой...

Сделать градиентную заливку в GIMP
Градиент создал. Но, когда провожу линию в выделенной области - линия направления градиента...

Сделать градиентную заливку кнопки
Здравствуйте. Имеется кнопка, у нее бордюр задается таким выражением &lt;ControlTemplate...

Как задать градиентную заливку TChart
Как задать градиентную заливку TChart?

4
2479 / 1290 / 215
Регистрация: 26.02.2009
Сообщений: 5,581
Записей в блоге: 5
01.04.2016, 12:42 2
Через PrimitiveType.Polygon можно рисовать только выпуклые полигоны(кусок кольца явно таким не является). Сделате через треугольники(или tranglestrip).
0
1517 / 1081 / 152
Регистрация: 23.07.2010
Сообщений: 5,983
01.04.2016, 14:21  [ТС] 3
Цитата Сообщение от snake32 Посмотреть сообщение
Через PrimitiveType.Polygon можно рисовать только выпуклые полигоны
возможно это и правда. Однако без окружностей все отрисовывается верно. Тут другая печаль образовывается- смешиваются цвета вершин. Однако и это я победил
0
2479 / 1290 / 215
Регистрация: 26.02.2009
Сообщений: 5,581
Записей в блоге: 5
01.04.2016, 14:28 4
Цитата Сообщение от pincet Посмотреть сообщение
Однако и это я победил
И как, если не секрет?
0
1517 / 1081 / 152
Регистрация: 23.07.2010
Сообщений: 5,983
01.04.2016, 15:18  [ТС] 5
да не секрет, конечно. Возможно (даже быстрее всего так оно и есть) это Voodoo Programming, но
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
 protected void OnRenderFrame(object sender, EventArgs e)
        {
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
            GL.LoadIdentity();
            GL.Ortho(-700.0, 700.0, -700.0, 700.0, 700.0, -700.0);
 
            switch (machine.ExtMode)
            {
                case Modes.Color:
                    GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
                    GL.Begin(PrimitiveType.Polygon);
                    GL.Color3(machine.CurrentColor);
                    for (double alpha = 2 * Math.PI; alpha >= 0; alpha -= 0.0001)
                        GL.Vertex2(250 * coeff * Math.Cos(alpha), 250 * Math.Sin(alpha));
                    GL.End();
                    break;
            }
 
            for (int i = 0; i < count; i++)
            {
                GL.PolygonMode(MaterialFace.FrontAndBack, i == machine.CurrentSector ? PolygonMode.Fill : PolygonMode.Line);
                GL.Begin(PrimitiveType.Polygon);
                GL.Color3(Color.Firebrick);
                for (double alpha = i * Math.PI / count; alpha <= (i + 1) * Math.PI / count; alpha += 0.0001)
                    GL.Vertex2(1100 * coeff * Math.Cos(alpha), 700 * Math.Sin(alpha));
                for (double alpha = (i + 1) * Math.PI / count; alpha >= i * Math.PI / count; alpha -= 0.0001)
                    GL.Vertex2(300 * coeff * Math.Cos(alpha), 100 * Math.Sin(alpha));
                GL.End();
            }
            SwapBuffers();
        }
это трохан измененный код, но смысл в том, чтобы цвет каждый раз указывать внутри Begin
0
Миниатюры
OpenTL - убрать градиентную заливку  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.04.2016, 15:18

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Как сделать градиентную заливку формы
Доброго. Старики, которые помнят vb6, наверняка знали такую штуку Dim lY As Long Dim...

Через макрос сделать градиентную заливку в графике у границы ряда
Вообщем повис вопрос, как программно разрисовать границу ряда градиентным цветом. Вот так можно...

Есть ли возможность для Shape в свойстве BackStyle сделать градиентную заливку?
Подскажите, пожалуйста, есть ли возможность для Shape в свойстве BackStyle сделать градиентную...

Поменять градиентную заливку "наоборот" во время анимации
Здравствуйте. 1. Нужно перевернуть градиентную заливку кнопки наоборот во время MouseEnter, после...


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

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

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