Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/96: Рейтинг темы: голосов - 96, средняя оценка - 4.79
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515

Исходники Проектов на OpenGL

07.02.2017, 07:01. Показов 20232. Ответов 87
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте программисты!

Дай думаю напишу, может реально кто кинет ссылки где можно скачать готовые исходники: минипроекты с применением OpenGL.

Может я зря думаю, что все специалисты по OpenGL такие ушлые, что не могут подсказать где искать исходники по OpenGL.

В основном интересует на С++ WinaAPI. но другие тоже сойдут.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2017, 07:01
Ответы с готовыми решениями:

Исходники OpenGL
Уважаемые форумчане, пожалуйста дайте мне исходники с уже полностью инициализированным OpenGL и готовым к работе, желательно исходники...

Ищу исходники opengl на visual c++
Помогите с поиском исходников) Нужно вывести на экран различные плоские и объемные геометрические фигуры.. Хочу попробовать реализовать...

Является ли OpenGL open source? Если да, где можно скачать исходники
Уважаемые гуру! Ответьте плиз на вопросы: 1. OpenGL - open source? Если да, где можно скачать исходники 2. Как OpenGL запускается под...

87
827 / 244 / 47
Регистрация: 24.01.2013
Сообщений: 750
26.02.2017, 14:53
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 8Observer8 Посмотреть сообщение
3D игра: Battle Snake
С++, OpenGL, WinAPI
Автор: Алексей Кудуштеев
В архиве Exe и исходники
На Win7 64-бит нормально работает.
2
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
02.03.2017, 00:42
Рисование одной точки с помощью C#, OpenGL 3.3 и шейдеров

Программа написана на C# + OpenGL с использованием библиотеки OpenTK. Рисует одну точку красного цвета, размером 10 пикселей с координатами (0.8, 0, 0). Координаты и размер задаются в вершинном шейдере, а цвет задаётся в фрагментном шейдере.

Можете скачать и запустить проект, должно работать в VS2012-VS2015: PointWithCustomSizeAndColour.zip

vShader.glsl (вершинный шейдер)
glSlang
1
2
3
4
5
6
7
#version 330
 
void main()
{
    gl_Position = vec4(0.8, 0.0, 0.0, 1.0);
    gl_PointSize = 10.0;
}
fShader.glsl (фрагментный шейдер)
glSlang
1
2
3
4
5
6
7
8
#version 330
 
out vec4 fragColor;
 
void main()
{
    fragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
Program.cs
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
namespace PointWithCustomSizeAndColour
{
    class Program
    {
        static void Main(string[] args)
        {
            using (MainWindow mainWindow = new MainWindow())
            {
                mainWindow.Run(30);
            }
        }
    }
}
MainWindow.cs
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Drawing;
using OpenTK;
using OpenTK.Graphics.OpenGL;
using System.IO;
 
namespace PointWithCustomSizeAndColour
{
    class MainWindow : GameWindow
    {
        string vShaderSource = null;
        string fShaderSource = null;
 
        bool canDraw = false;
 
        string infoFileName = "info.txt";
 
        int program;
 
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
 
            Title = "Point With Custom Size And Colour";
            Width = 512;
            Height = 512;
 
            // Load shaders from files
            ShaderLoader.LoadShader(infoFileName, "./Shaders/vShader.glsl", out vShaderSource);
            ShaderLoader.LoadShader(infoFileName, "./Shaders/fShader.glsl", out fShaderSource);
            if (vShaderSource == null || fShaderSource == null)
            {
                File.AppendAllText(infoFileName, "Failed to load shaders from files" + Environment.NewLine);
                return;
            }
 
            // Initialize shaders
            if (!ShaderLoader.InitShaders(vShaderSource, fShaderSource, out program))
            {
                File.AppendAllText(infoFileName, "Failed to initialize the shaders" + Environment.NewLine);
                return;
            }
 
            // Specify the color for clearing
            GL.ClearColor(Color.Black);
 
            GL.Enable(EnableCap.ProgramPointSize);
 
            canDraw = true;
        }
 
        protected override void OnRenderFrame(FrameEventArgs e)
        {
            base.OnRenderFrame(e);
            GL.Viewport(0, 0, Width, Height);
 
            if (!canDraw) return;
 
            GL.Clear(ClearBufferMask.ColorBufferBit);
 
            // Draw a point
            GL.DrawArrays(PrimitiveType.Points, 0, 1);
 
            GL.Flush();
            SwapBuffers();
        }
    }
}
ShaderLoader.cs
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
using System.IO;
using OpenTK.Graphics.OpenGL;
using System;
 
namespace PointWithCustomSizeAndColour
{
    class ShaderLoader
    {
        private static string infoFileName = null;
 
        ///<summary>
        ///Create a program object and make current
        ///</summary>
       ///<param name="vShader">a vertex shader program</param>
        ///<param name="fShader">a fragment shader program</param>
        ///<param name="program">created program</param>
        ///<returns>
        ///return true, if the program object was created and successfully made current
        ///</returns>
        public static bool InitShaders(string vShader, string fShader, out int program)
        {
            program = CreateProgram(vShader, fShader);
            if (program == 0)
            {
                File.AppendAllText(infoFileName, "Failed to create program" + Environment.NewLine);
                return false;
            }
 
            GL.UseProgram(program);
 
            return true;
        }
 
        ///<summary>
        ///Load a shader from a file
        ///</summary>
        ///<param name="infoFileName">a file name for errors</param>
        ///<param name="fileName">a file name to a shader</param>
        ///<param name="shaderSource">a shader source string</param>
        public static void LoadShader(string infoFileName, string fileName, out string shaderSource)
        {
            ShaderLoader.infoFileName = infoFileName;
 
            if (File.Exists(infoFileName))
            {
                // Clear File
                File.WriteAllText(infoFileName, "");
            }
 
            shaderSource = null;
 
            using (StreamReader sr = new StreamReader(fileName))
            {
                shaderSource = sr.ReadToEnd();
            }
        }
 
        private static int CreateProgram(string vShader, string fShader)
        {
            // Create shader object
            int vertexShader = LoadShader(ShaderType.VertexShader, vShader);
            int fragmentShader = LoadShader(ShaderType.FragmentShader, fShader);
            if (vertexShader == 0 || fragmentShader == 0)
            {
                return 0;
            }
 
            // Create a program object
            int program = GL.CreateProgram();
            if (program == 0)
            {
                return 0;
            }
 
            // Attach the shader objects
            GL.AttachShader(program, vertexShader);
            GL.AttachShader(program, fragmentShader);
 
            // Link the program object
            GL.LinkProgram(program);
 
            // Check the result of linking
            int status;
            GL.GetProgram(program, GetProgramParameterName.LinkStatus, out status);
            if (status == 0)
            {
                string errorString = string.Format("Failed to link program: {0}" + Environment.NewLine, GL.GetProgramInfoLog(program));
                File.AppendAllText(infoFileName, errorString);
                GL.DeleteProgram(program);
                GL.DeleteShader(vertexShader);
                GL.DeleteShader(fragmentShader);
                return 0;
            }
 
            return program;
        }
 
        private static int LoadShader(ShaderType shaderType, string shaderSource)
        {
            // Create shader object
            int shader = GL.CreateShader(shaderType);
            if (shader == 0)
            {
                File.AppendAllText(infoFileName, "Unable to create shader" + Environment.NewLine);
                return 0;
            }
 
            // Set the shader program
            GL.ShaderSource(shader, shaderSource);
 
            // Compile the shader
            GL.CompileShader(shader);
 
            // Check the result of compilation
            int status;
            GL.GetShader(shader, ShaderParameter.CompileStatus, out status);
            if (status == 0)
            {
                string errorString = string.Format("Failed to compile {0} shader: {1}" + Environment.NewLine, shaderType.ToString(), GL.GetShaderInfoLog(shader));
                File.AppendAllText(infoFileName, errorString);
                GL.DeleteShader(shader);
                return 0;
            }
 
            return shader;
        }
    }
}
1
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
02.03.2017, 08:49  [ТС]
Статья + исходные коды для VBO: http://www.songho.ca/opengl/gl_vbo.html
Там есть exe файл его запустите и нажмите пробел. Переключается режим обычный и режим VBO.
Вложения
Тип файла: zip vbo.zip (763.5 Кб, 15 просмотров)
Тип файла: zip vboSimple.zip (613.6 Кб, 15 просмотров)
1
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
04.03.2017, 18:24
Примеры подключения OpenTK к WinForms, WPF и консольному проекту.

1
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
07.03.2017, 15:27
Мой порт программы "ClickedPoints" c JavaScript+WebGL на C#+OpenGL/OpenTK

Эти программы эквивалентны:
B этих программах рисуются точки с размером 10 пикселей в месте клика мыши.

Координаты точек передаются в вершинный шейдер с помощью glVertexAttrib
Миниатюры
Исходники Проектов на OpenGL  
Вложения
Тип файла: zip DrawPointsByClick.zip (2.48 Мб, 13 просмотров)
1
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
08.03.2017, 14:02
Принудительный запуск программы на C#/OpenGL с дискретной видеокартой

В примерах показано какой код нужно добавить и какие настройки выставить, чтобы программа на C#/OpenGL запускалась с дискретной видеокартой, а не с интегрированной:

Тема для обсуждения: Принудительный запуск программы с дискретной видеокартой из C#

Screenshot:
Кликните здесь для просмотра всего текста
1
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
10.03.2017, 00:33
Портирую примеры на C#/OpenGL/OpenTK с JavaScript/WebGL из этой книги: https://sites.google.com/site/webglbook/

К настоящему моменту портировал все примеры из второй и третьей главы. Прикрепил к сообщению в архиве: Ch02Ch03.rar

Примеры можно запустить в браузере:
Вложения
Тип файла: rar Ch02Ch03.rar (3.19 Мб, 13 просмотров)
1
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
12.03.2017, 21:50
Сделал маленький пример с VBO на C# WPF, которая просто выводить квадрат. Но как бонус, моя программа проверяет локаль и если локаль русская, то интерфейс будет переведёт на русский. В противном случае, интерфейс останется английским. Статья по локализации на хабре: Локализация WPF приложений И ещё один бонус - программа принудительно запускается со второй более мощной видео картой ноутбука. А если бы она запускалась с интегрированной, то не работала бы, потому что, например, у моей интегрированной версия OpenGL 3.1, а необходима версия 3.3, а у второй более мощной версия 4.5.

Скачать исходники: OpenGLBufferVBO (исходники).rar
Скачать exe: OpenGLBufferVBO.rar

Screenshot с русским интерфейсом:
Кликните здесь для просмотра всего текста


Screenshot c английским интерфейсом:
Кликните здесь для просмотра всего текста
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
14.03.2017, 09:07
Наложение текстуры на квадрат на C# WPF и OpenTK.GLControl

VS2012-VS2015
OpenGL v2.0
.NET 3.0

Скачать EXE: OpenGLBufferVboTexture.rar
Скачать исходники: OpenGLBufferVboTexture (исходники).rar

Screenshot:
Миниатюры
Исходники Проектов на OpenGL  
2
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
31.03.2017, 17:11
Нашёл исходники небольшой 3D игры "OpenLara" на WinAPI и OpenGL: https://github.com/XProger/OpenLara

Может что-то удасться полезного подсмотреть. Например, логику построения небольшого игрового движка и шейдеров.

В исходниках есть EXE. А так же можно поиграть в WebGL версию сборки, созданной с помощью Emscripten из C++.

Видео геймплея


Как я понял, данный проект был поглощён этим проектом под названием "OpenTomb", но он уже на SDL2 вместо WinAPI, но так же на C++ и OpenGL, с реализацией игрового скриптинга на Lua.

На всякий случай прикрепляю исходники обоих проектов.
Вложения
Тип файла: zip OpenLara-master.zip (4.57 Мб, 13 просмотров)
Тип файла: zip OpenTomb-master.zip (9.61 Мб, 10 просмотров)
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
31.03.2017, 17:26
Проект OpenLara создан одним человеком. Я нашёл такую информацию от автора:

> Открыты ли какие-то исходники у оригинальной игры?
Нет, но есть дизассемблер

> Используются ли наработки других проектов?
Меня консультируют ребята из аналогичного проекта OpenTomb

> Откуда известны форматы данных оригинальной игры - текстур, уровней, моделей и т. д.?
В 1999 году в сети появился анонимный документ частично описывающий форматы данных. Его со временем развило сообщество.

> Откуда берутся параметры игровой логики - скорости врагов, урон оружия и т. д?
Скорость и ускорение хранится в параметрах самой анимации. Урон худо-бедно из асм листинга достаётся.

> Насколько вообще игровая логика соответствует оригиналу?
Целью является полное воссоздание, так что в перспективе все недочёты будут пофикшены.
1
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
07.04.2017, 15:15
Цитата Сообщение от infobos Посмотреть сообщение
Графика трехмерной игры на OpenGL автор: А.В.Боресков
Я глянул, вроде, хорошая книга. У автора есть сайт, где много статей http://steps3d.narod.ru/ . Здесь можно скачать доп. материалы к его книгам и статьям. И ещё, как оказалось, А.В. Боресков является переводчиком книги: OpenGL ES 3.0. Руководство разработчика
1
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
03.05.2017, 04:49  [ТС]
Игра либиринт 3D движок от первого лица. Версия 1 пока используется рисования по массивам вершин (без VBO).
Написана на Visual Studio 2012
WinAPI c++ OpenGL приложение Win32 написана без лишних библиотек типа глут. Окно и события собирается на голом WinAPI.
Миниатюры
Исходники Проектов на OpenGL  
Вложения
Тип файла: rar Лабиринт Исходник.rar (7.54 Мб, 35 просмотров)
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
18.05.2017, 06:09  [ТС]
Вот исходник проекта, где используется VBO. Используется Голый WinAPI
Написано на Visual Studio 2012. Запускать файл Win32Project1.sln
Два варианта:
1. (Тест VBP) Для каждого массива (цвет, координаты текстур и вершины).
2. (Тест VBO - большой массив) Объединение массива для трех атрибутов.

У кого не сработает, может быть, что видеокарта не поддерживает VBO, либо как у меня по техническим требованиям поддерживает, а в реальности не работает - это подтверждается другими проектами с VBO.

На ноутбуках с началом Windows 8 работает VBO.
Вложения
Тип файла: rar Тест VBO.rar (7.44 Мб, 6 просмотров)
Тип файла: rar Тест VBO - большой массив.rar (7.40 Мб, 9 просмотров)
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
18.05.2017, 06:09  [ТС]
Ошибка.
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
18.05.2017, 06:20  [ТС]
Как использовать шейдеры на голом WinAPI. Подключены библиотеки, указатели функций и тому подобное.
Также написано на Visual Studio 2012. Запускать файл Win32Project1.sln
Вложения
Тип файла: rar Тест_Shad.rar (7.47 Мб, 7 просмотров)
0
Строитель
 Аватар для infobos
460 / 77 / 4
Регистрация: 18.06.2010
Сообщений: 515
18.05.2017, 06:41  [ТС]
Тут тоже используется шейдеры
Миниатюры
Исходники Проектов на OpenGL  
Вложения
Тип файла: rar FBOShadows_CppOpenGL33WinAPI.rar (1,021.6 Кб, 17 просмотров)
Тип файла: rar FBOShadows_CppOpenGL33GLFW.rar (1.34 Мб, 13 просмотров)
Тип файла: rar FBOShadows_CppOpenGL33FreeGLUT.rar (1.17 Мб, 16 просмотров)
0
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
31.10.2017, 09:46
Здесь можно скачать много полезных примеров на WinAPI, OpenGL 3.3
1
9987 / 2959 / 497
Регистрация: 05.10.2013
Сообщений: 8,110
Записей в блоге: 243
10.12.2017, 16:08
Исходные коды примеров на актуальном OpenGL 3.3, на чистом WinAPI (без использования каких либо библиотека вроде GLUT и т.д.). Никаких устаревших функций типа: glBegin/glEnd, glMatrixMode, glPushMatrix и т.д, которые были удалены из OpenGL 3.1 Core.

Скачать архив всех проектов в одном решении для VS2015: gl33lessons_source.zip

Скачать архив с EXE всех примеров: gl33lessons_exe.zip

Урок 1 - Создание контекста OpenGL 3.3



Урок 2 - Рисуем первый треугольник



Урок 3 - Вращающийся куб с текстурой



Урок 4 - Свет, камера, материал! Часть 1



Урок 5 - Свет, камера, материал! Часть 2



Урок 6 - Тени от объектов



Урок 7 - Экранные эффекты

F2 - Обесцвечивание (grayscale)


F3 - Сепия (sepia)


F4 - Инверсия (inverse)


F5 - Размытие (blur)


F6 - Рельеф (emboss)


F7 - Псевдо-аберрация (aberration)
1
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,152
Записей в блоге: 2
13.12.2017, 08:01
Цитата Сообщение от 8Observer8 Посмотреть сообщение
F6 - Рельеф (emboss)
Выглядит как махровый bump. Но никаких "битангентов" в примере нет, да и текстура самая обычная. Как же так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2017, 08:01

Исходники Проектов на DirectX
Здравствуйте программисты! Дай думаю напишу, может реально кто кинет ссылки где можно скачать готовые исходники: минипроекты с...

Ищу исходники интересных проектов на C++
Приветствую всех! Мне тут подсказали, что для эффективного изучения языка и основных приемов, используемых в нем, необходимо читать...

Подскажите где найти исходники программ(проектов) на QT
Хотелось бы нормальный рабочий проект (например с поддержкой БД) на QT, чтоб запустить и разбираться просто для обучения, ато быдлокодить...

Где можно посмотреть исходники шаблонов проектов для C#?
Где можно посмотреть исходники шаблонов проектов для C#?

[Опрос] Где Вы храните исходники своих приватных проектов?
Добрый день, раньше никогда не любил пихать чтолибо важное в облака, но после очередной поломки жеских дисков сразу на неск. машинах, решил...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru