Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 17.05.2016, 17:04   #21
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,273
По умолчанию

Цитата:
Сообщение от Soyder Посмотреть сообщение
Добрый день. Хочу научится писать игры на андроид, но не знаю с чего начать.
Нужно смотреть видео инструкции, как опытные люди делают игру и запоминать их методологии. Потом качать чужие бесплатные игры с открытым исходным кодом и изучать их код. Например, я качаю с Asset Store финальные результаты туторов

Нужно изучать официальные туториалы и следить за выходом новых: http://unity3d.com/learn

Видео инструкции по Unity можно найти на этих ресурсах:
Лучше всего начать с этой видео инструкции: 2D Zombies Game Android and iOS Game Development with Unity

Ничего, что они на английском. Всё и так понятно, когда человек делает и вы видите результат

Книга на русском обязательная к прочтению: https://habrahabr.ru/company/piter/blog/272123/

На русском очень мало книг. Поэтому нужно читать на английском. Переводить можно с помощью translate.google.com

Переводы:
Оригиналы переводов:
  • 2015 - 06 - Unity in Action Multiplatform Game Development in C# with Unity 5 - Joe Hocking -> source code
  • 2015 - 06 - Animation Essentials - Alat Thorn -> source code
  • 2015 - 02 - Mastering Unity Scripting - Alan Thorn -> source code
  • 2013 - 06 - Unity Shaders and Effects Cookbook - Kenneth Lammers -> source code

Последний раз редактировалось 8Observer8; 18.05.2016 в 09:35.
8Observer8 вне форума Ответить с цитированием
Старый 17.05.2016, 17:05   #22
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,273
По умолчанию

Список всех книг в хронологическом порядке (год - месяц - название - автор -> исходники к книге)
  • 2016 - 03 - Unity 5.x Game AI Programming Cookbook -> source code
  • 2016 - 03 - Unity 5.x By Example - Alan Thorn -> source code
  • 2016 - 03 - Learning C# by Developing Games with Unity 5.x - Second Edition -> source code
  • 2016 - 02 - Unity.5.x Shaders and Effects Cookbook - Alan Zucconi, Kenneth Lammers -> source code
  • 2016 - 01 - Procedural Content Generation for Unity Game Development - Ryan Watkins -> source code
  • 2015 - 12 - Unity UI Cookbook - Francesco Sapio -> source code
  • 2015 - 12 - Unity 5 From Zero to Proficiency (Beginner) - Patrick Felicia -> amazon link
  • 2015 - 12 - Unity 5 Coroutines Beginner - Lucas Faustino -> amazon link
  • 2015 - 11 - Unity Game Development in 24 Hours, Sams Teach Yourself - Ben Tristem, Mike Geig -> amazon link
  • 2015 - 11 - Unity 5 Game Optimization - Chris Dickinson -> source code
  • 2015 - 11 - Building a Game with Unity and Blender -> source code
  • 2015 - 10 - Unity 5.x Cookbook - Matt Smith, Chico Queiroz -> source code
  • 2015 - 10 - Unity 5 Writing Cleaner Code Beginner - Lucas Faustino -> amazon link
  • 2015 - 10 - Unity 5 From Zero to Proficiency (Foundations) - Patrick Felicia -> amazon link
  • 2015 - 10 - Building an FPS Game with Unity - John P. Doran -> source code
  • 2015 - 09 - Unity Virtual Reality Projects - Jonathan Linowes -> source code
  • 2015 - 09 - Unity AI Game Programming - Second Edition - Ray Barrera -> source code
  • 2015 - 09 - Oculus Rift in Action - BinanGotit -> source code
  • 2015 - 09 - Learning Unity iOS Game Development - Kyle Langley -> source code
  • 2015 - 09 - Extending Unity with Editor Scripting - Angelo Tadres -> source code
  • 2015 - 08 - Unity 5 for Android Essentials - Valera Cogut -> source code
  • 2015 - 06 - Unity in Action Multiplatform Game Development in C# with Unity 5 - Joe Hocking -> source code
  • 2015 - 06 - Building Levels in Unity - Volodymyr Gerasimov -> source code
  • 2015 - 06 - Animation Essentials - Alat Thorn -> source code
  • 2015 - 05 - Getting Started with Unity 5 - Dr Edward Lavieri -> source code
  • 2015 - 04 - Learning Unity Android Game Development - Finnegan -> source code
  • 2015 - 02 - Unity 2D Game Development Cookbook - Claudio Scolastici -> source code
  • 2015 - 02 - Mastering Unity Scripting - Alan Thorn -> source code
  • 2015 - 01 - Unity 3D UI Essentials - Simon Jackson -> source code
  • 2014 - 12 - Unity Game Development Scripting - Kyle D'Aoust -> source code
  • 2014 - 12 - Unity AI Programming Essentials - Curtis Bennett, Dan Violet Sagmiller -> source code
  • 2014 - 11 - Unity Game Development Blueprints - John P. Doran -> source code
  • 2014 - 10 - Learning Unity Physics - K. Aava Rani -> source code
  • 2014 - 09 - Learning C Sharp Programming With Unity 3D - Alex Okita -> source code
  • 2014 - 09 - Beginning 3D Game Development with Unity 4 - Sue Blackman -> source code
  • 2014 - 08 - Mastering Unity 2D Game Development - Simon Jackson -> source code
  • 2014 - 08 - Learning Unity 2D Game Development by Example - Venita Pereira -> source code
  • 2014 - 07 - Introduction To Game Design, Prototyping, And Development -> link to amazon
  • 2014 - 06 - C# Game Programming Cookbook for Unity 3D - Jeff Murray -> source code
  • 2014 - 03 - Unity 2D Game Development - Dave Calabrese -> source code
  • 2014 - 03 - Creating E-Learning Games with Unity - David Horachek -> source code
8Observer8 вне форума Ответить с цитированием
Старый 15.11.2020, 12:18   #23
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,273
По умолчанию

На данный момент актуальной является версия Qt 5.15.1. Первый пример данное темы не будет работать на этой версии. Дата публикации первого сообщения "15.09.2014". Подумать только, это 6 лет назад, и как же быстро летят года. Я публикую пример, который работает в Qt 5.15.1. Вам нужно создать новое приложение из Qt Creator. Во время создания выбрать приложение "Qt Widgets Application" > тип приложение Widget > убрать галочку "Generate Forms". Когда приложение будет создано, то удалите файлы Widget.h и Widget.cpp. В примере будет задействован только файл main.cpp. В файл main.cpp нужно копировать код ниже. В файл проекта (с расширение .pro) нужно добавить строку:
Цитата:
win32: LIBS += -lopengl32
Этот пример рисует треугольник. В качестве бонуса пример на WebGL и TypeScript, который можно запустить в браузере в один клик: https://plnkr.co/edit/gAfPR7ZIKjJXul...ain.ts&preview

Обратите внимание на строки:

Код:
#ifdef _WIN32
#include <windows.h>
extern "C" __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
extern "C" __declspec(dllexport) DWORD AmdPowerXpressRequestHighPerformance = 0x00000001;
#endif
Эти строки кода нужны, чтобы пример запускался на ноутбуках, которые используют две видеокарты: маломощную и более мощную.

main.cpp

Код:
// Minimal OpenGL example that works on Notebook and Android
// Add to .pro file: win32: LIBS += -lopengl32

#ifdef _WIN32
#include <windows.h>
extern "C" __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
extern "C" __declspec(dllexport) DWORD AmdPowerXpressRequestHighPerformance = 0x00000001;
#endif

#include <QApplication>
#include <QOpenGLWidget>
#include <QOpenGLShaderProgram>
#include <QOpenGLBuffer>

class Widget : public QOpenGLWidget {
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr) : QOpenGLWidget(parent) { }
private:
    QOpenGLShaderProgram m_program;
    QOpenGLBuffer m_vertPosBuffer;

    void initializeGL() override {
        glClearColor(0.5f, 0.8f, 0.7f, 1.f);
        resize(400, 500);
        const char *vertShaderSrc =
                "attribute vec3 aPosition;"
                "void main()"
                "{"
                "    gl_Position = vec4(aPosition, 1.0);"
                "}";
        const char *fragShaderSrc =
                "void main()"
                "{"
                "    gl_FragColor = vec4(0.5, 0.2, 0.9, 1.0);"
                "}";
        m_program.addShaderFromSourceCode(QOpenGLShader::Vertex, vertShaderSrc);
        m_program.addShaderFromSourceCode(QOpenGLShader::Fragment, fragShaderSrc);
        m_program.link();
        m_program.bind();
        float vertPositions[] = {
            -0.5f, -0.5f, 0.f,
            0.5f, -0.5f, 0.f,
            0.f, 0.5f, 0.f
        };
        m_vertPosBuffer.create();
        m_vertPosBuffer.bind();
        m_vertPosBuffer.allocate(vertPositions, sizeof(vertPositions));
        m_program.bindAttributeLocation("aPosition", 0);
        m_program.setAttributeBuffer(0, GL_FLOAT, 0, 3);
        m_program.enableAttributeArray(0);
    }
    void paintGL() override {
        glClear(GL_COLOR_BUFFER_BIT);
        glDrawArrays(GL_TRIANGLES, 0, 3);
    }
    void resizeGL(int w, int h) override {
        glViewport(0, 0, w, h);
    }
};

#include "main.moc"

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}
Изображения
Тип файла: png c1298273de8142b78a8a8db4fe1febb7.TriangleInOneFile_Qt5OpenGLES20Cpp_500x500.png (5.9 Кб, 19 просмотров)

Последний раз редактировалось 8Observer8; 15.11.2020 в 12:41.
8Observer8 вне форума Ответить с цитированием
Старый 21.11.2020, 02:06   #24
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,273
По умолчанию

Такой же код, что и выше, но на PyQt5: https://rextester.com/LWYAU14361 Если нравится изучать Python, то сочетание PyQt5 + OpenGL + простые игры - это один из самых интересных путей изучения. Плюс можно писать неигровые приложения с интерактивной 3D (и/или 2D) графикой, сочетая с GUI на Qt. PyQt5 работает поверх Qt C++, поэтому работает довольно шустро.

triangle_pyqt5_opengles20.png

Код:
import sys
import numpy as np
from OpenGL import GL as gl
from PyQt5.QtWidgets import QOpenGLWidget, QApplication
from PyQt5.QtGui import (QOpenGLBuffer, QOpenGLShaderProgram,
    QOpenGLShader)
from PyQt5.QtCore import Qt

class OpenGLWidget(QOpenGLWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Triangle, PyQt5, OpenGL ES 2.0")
        self.resize(300, 300)
    def initializeGL(self):
        gl.glClearColor(0.5, 0.8, 0.7, 1.0)
        vertShaderSrc = """
            attribute vec3 aPosition;
            void main()
            {
                gl_Position = vec4(aPosition, 1.0);
            }
        """
        fragShaderSrc = """
            void main()
            {
                gl_FragColor = vec4(0.5, 0.2, 0.9, 1.0);
            }
        """
        program = QOpenGLShaderProgram(self)
        program.addShaderFromSourceCode(QOpenGLShader.Vertex, vertShaderSrc)
        program.addShaderFromSourceCode(QOpenGLShader.Fragment, fragShaderSrc)
        program.link()
        program.bind()
        vertPositions = np.array([
            -0.5, -0.5, 0.0,
            0.5, -0.5, 0.0,
            0.0, 0.5, 0.0], dtype=np.float32)
        self.vertPosBuffer = QOpenGLBuffer()
        self.vertPosBuffer.create()
        self.vertPosBuffer.bind()
        self.vertPosBuffer.allocate(vertPositions, len(vertPositions) * 4)
        program.bindAttributeLocation("aPosition", 0)
        program.setAttributeBuffer(0, gl.GL_FLOAT, 0, 3)
        program.enableAttributeArray(0)

    def paintGL(self):
        gl.glClear(gl.GL_COLOR_BUFFER_BIT)
        gl.glDrawArrays(gl.GL_TRIANGLES, 0, 3)

def main():
    QApplication.setAttribute(Qt.AA_UseDesktopOpenGL)
    a = QApplication(sys.argv)
    w = OpenGLWidget()
    w.show()
    sys.exit(a.exec_())

if __name__ == "__main__":
    main()

Последний раз редактировалось 8Observer8; 21.11.2020 в 02:13.
8Observer8 вне форума Ответить с цитированием
Старый 26.11.2020, 19:54   #25
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,273
По умолчанию

Куб на Qt C++ и OpenGL:
Куб на PyQt5 и OpenGL 3.3: https://rextester.com/VIQC38551
Куб на PySide2 и OpenGL 3.3: https://rextester.com/OWJ98916
Изображения
Тип файла: png Cube_OpenGLES20_Qt5Cpp.png (3.2 Кб, 6 просмотров)

Последний раз редактировалось 8Observer8; 26.11.2020 в 20:09.
8Observer8 вне форума Ответить с цитированием
Старый 27.11.2020, 11:34   #26
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 16,233
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
как же быстро летят года
И не говори )
Alar на форуме Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Уроки по созданию игр для новичков... -=DeS=- Gamedev - cоздание игр: Unity, OpenGL, DirectX 750 14.11.2017 20:26
Работа с файлами: запись, добавление, чтение (найти ошибку в коде) / C для начинающих Надо создать программу для работы с файлами Konlor Общие вопросы C/C++ 2 18.05.2014 11:37
Проблема с примером из темы "Уроки по созданию игр для новичков..." AvaMight Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 11.02.2012 09:55
Не могли бы дать заготовки процедур для базы данных romich.91 Паскаль, Turbo Pascal, PascalABC.NET 2 27.05.2009 17:00


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя