Автор Тема: Freebasic  (Прочитано 11503 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #45 : 07 Август 2016, 15:33:17 »
Цитировать
Получился бы продвинутый OpenGL рендер для анимации. Кадры бы вылетали за секунду пачками.

Такое можно сделать с помощью движка Irrlicht  и враппера к нему. Там есть и GUI, и поддержка многих 3d форматов файлов... можно внедрять внутрь OpenGL код и писать шейдеры на GLSL. Но лучше юзать  этот вариант: http://worldsim3d.com/ru/download в нем нет проблем с кириллицей.
Или если серьёзное что-то надо, то лучше использовать исходники Irrlicht на Си, и писать на Си.
http://www.irrlicht3d.org/wiki/
http://irrlicht.ru
« Последнее редактирование: 07 Август 2016, 16:15:44 от Samovar »

Оффлайн LanuHum

  • Житель
Re: Freebasic
« Ответ #46 : 07 Август 2016, 16:12:02 »
Цитировать
Получился бы продвинутый OpenGL рендер для анимации. Кадры бы вылетали за секунду пачками.

Такое можно сделать с помощью движка Irrlicht  и враппера к нему. Там есть и GUI, и поддержка многих 3d форматов файлов... можно внедрять внутрь OpenGL код и писать шейдеры на GLSL. Но лучше юзать  этот вариант: http://worldsim3d.com/ru/download в нем нет проблем с кириллицей.

Irrlicht из исходников на С++ не собрался. По ссылке пошёл, там для линукса 32-битной версии бета качается после регистрации.

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #47 : 07 Август 2016, 16:42:56 »
Вот почитай возможности оригинального на Си++: http://irrlicht.ru/?page_id=4
У враппера под Freebasic несколько ограничены возможности... и только под х32

Оффлайн LanuHum

  • Житель
Re: Freebasic
« Ответ #48 : 07 Август 2016, 16:55:53 »
Вот почитай возможности оригинального на Си++: http://irrlicht.ru/?page_id=4
У враппера под Freebasic несколько ограничены возможности... и только под х32

Я уже там был. Не собирается на С++.
In file included from COpenGLDriver.h:25:0,
                 from COpenGLDriver.cpp:5:
COpenGLExtensionHandler.h:1237:3: ошибка: «PFNGLBLENDEQUATIONPROC» не является именем типа
   PFNGLBLENDEQUATIONPROC pGlBlendEquation;
И, эта ошибка, как я понял, просматривая в гугле, зарыта ни в коде этого движка, а в каком-то из подключаемых хидеров другой либы.

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #49 : 07 Август 2016, 17:02:21 »
Фиг его знает, я не линуксойд :)
Может это поможет:
http://irrlicht.ru/?page_id=507
http://www.irrlicht3d.org/wiki/index.php?n=Main.CompilingOnLinux
http://cegui.org.uk/forum/viewtopic.php?t=5058
...
Как установить Irrlicht для  С++ под Windows http://irrlicht.ru/?page_id=497

« Последнее редактирование: 07 Август 2016, 17:11:38 от Samovar »

Оффлайн LanuHum

  • Житель
Re: Freebasic
« Ответ #50 : 07 Август 2016, 17:28:37 »
Вот тебе альтернатива. PyQt5. Анимация в реальном времени на весь экран 1920х1080:
# PyQT/OpenGL example
# shaders from here: http://www.iquilezles.org/www/material/nvscene2008/rwwtt.pdf
#
# Author: Peter Bouda, http://www.peterbouda.eu

import time
import array

from PyQt5.QtMultimedia import *
from PyQt5 import QtCore, QtGui, QtWidgets


class OpenGLWindow(QtGui.QWindow):
    def __init__(self, parent=None):
        super(OpenGLWindow, self).__init__(parent)

        self.m_update_pending = False
        self.m_animating = False
        self.m_context = None
        self.m_gl = None

        self.setSurfaceType(QtGui.QWindow.OpenGLSurface)

    def initialize(self):
        pass

    def setAnimating(self, animating):
        self.m_animating = animating

        if animating:
            self.renderLater()

    def renderLater(self):
        if not self.m_update_pending:
            self.m_update_pending = True
            QtGui.QGuiApplication.postEvent(self, QtCore.QEvent(QtCore.QEvent.UpdateRequest))

    def renderNow(self):
        if not self.isExposed():
            return

        self.m_update_pending = False

        needsInitialize = False

        if self.m_context is None:
            self.m_context = QtGui.QOpenGLContext(self)
            self.m_context.setFormat(self.requestedFormat())
            self.m_context.create()

            needsInitialize = True

        self.m_context.makeCurrent(self)

        if needsInitialize:
            version = QtGui.QOpenGLVersionProfile()
            version.setVersion(2, 0)
            self.m_gl = self.m_context.versionFunctions(version)
            self.m_gl.initializeOpenGLFunctions()

            self.initialize(self.m_gl)

        self.render(self.m_gl)

        self.m_context.swapBuffers(self)

        if self.m_animating:
            self.renderLater()

    def event(self, event):
        if event.type() == QtCore.QEvent.UpdateRequest:
            self.renderNow()
            return True

        return super(OpenGLWindow, self).event(event)

    def exposeEvent(self, event):
        self.renderNow()

    def resizeEvent(self, event):
        self.renderNow()


class ChocoWindow(OpenGLWindow):
   
    vertexShaderSource = '''
attribute highp vec4 vPosition;
varying highp vec3 s[4];

void main() {
    gl_Position=vPosition;
    s[0]=vec3(0);
    s[3]=vec3(sin(abs(vPosition[0]*.0001)),
        cos(abs(vPosition[0]*.0001)),0);
    s[1]=s[3].zxy;
    s[2]=s[3].zzx;
}
'''

    fragmentShaderSource = '''
varying highp vec3 s[4];

void main() {
    highp float t,b,c,h=0.0;
    highp vec3 m,n,p=vec3(.2),d=normalize(.001*gl_FragCoord.rgb-p);
    for(int i=0;i<4;i++) {
        t=2.0;
        for(int i=0; i<4; i++) {
            b=dot(d,n=s[i]-p);
            c=b*b+.2-dot(n,n);
            if ((b-c)<t)
                if (c>0.0) {
                    m=s[i];
                    t=b-c;
                }
        }
        p+=t*d;
        d=reflect(d,n=normalize(p-m));
        h+=pow(n.x*n.x,44.)+n.x*n.x*.2;
    }
    gl_FragColor=vec4(h,h*h,h*h*h*h,h);
}
'''

    def __init__(self, parent=None):
        super(ChocoWindow, self).__init__(parent)

    def initialize(self, gl):
        self.program = QtGui.QOpenGLShaderProgram(self)

        self.program.addShaderFromSourceCode(QtGui.QOpenGLShader.Vertex,
                self.vertexShaderSource)
        self.program.addShaderFromSourceCode(QtGui.QOpenGLShader.Fragment,
                self.fragmentShaderSource)

        self.program.link()

        self.vAttr = self.program.attributeLocation('vPosition')
        #gl.BufferData(gl.GL_ARRAY_BUFFER, 16*4, None, gl.GL_STATIC_DRAW)

    def render(self, gl):
        gl.glViewport(0, 0, self.width(), self.height())
        gl.glClear(gl.GL_COLOR_BUFFER_BIT)

        self.program.bind()

        t = int(time.clock()*10000)

        vertices = array.array("f", [
            float(t), float(t), 0.0,
            float(-t),  float(t), 0.0,
            float(-t), float(-t), 0.0,
            float(t),  float(-t), 0.0
        ])

        indices = array.array("B", [0,1,2,0,2,3])

        gl.glEnableVertexAttribArray(self.vAttr)

        gl.glVertexAttribPointer(self.vAttr,
            3,
            gl.GL_FLOAT,
            gl.GL_FALSE,
            0,
            vertices)

        #gl.glDrawArrays(gl.GL_TRIANGLES, 0, 4)
        gl.glDrawElements(gl.GL_TRIANGLES, 6, gl.GL_UNSIGNED_BYTE, indices)

        gl.glDisableVertexAttribArray(self.vAttr)

        self.program.release()


if __name__ == '__main__':
    import sys
 
    app = QtWidgets.QApplication(sys.argv)
   
    format = QtGui.QSurfaceFormat()
    format.setSamples(4)

    window = ChocoWindow()
    window.setFormat(format)
    window.resize(640, 480)
    window.show()

    window.setAnimating(True)

    sys.exit(app.exec_())

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #51 : 07 Август 2016, 17:31:45 »
 ;D  ты смеёшься, что ли? Нахрена Python?

Оффлайн LanuHum

  • Житель
Re: Freebasic
« Ответ #52 : 07 Август 2016, 17:34:20 »
;D  ты смеёшься, что ли? Нахрена Python?
Потому что irrlicht не пашет!  ;D

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #53 : 07 Август 2016, 17:37:49 »
Дык это он у тебя не пашет... у меня на Windows 7 враппер под Freebasic прекрасно работает.
И мне, в принципе, этого достаточно на данный момент, чтобы экспериментировать, а не заморачиваться на разработку серьёзного ПО :) ...

Оффлайн LanuHum

  • Житель
Re: Freebasic
« Ответ #54 : 07 Август 2016, 17:52:32 »
Дык это он у тебя не пашет... у меня на Windows 7 враппер под Freebasic прекрасно работает.
И мне, в принципе, этого достаточна на данный момент, чтобы экспериментировать, а не заморачиваться на разработку серьёзного ПО :) ...
;D
Та и мне достаточно того, что я делаю на досуге. Просто, если не пашет у меня, то и у других линоксоидов, скорее всего проблема. Оно раньше было в репах, и, тоже не работало уже собранное.
Вообще, мне нравится, что, когда я пишу, меня спрашивают: А оно кроссплатформенное? А, когда кто-то пишет, то он пишет для винды не заморачиваясь вопросом о кроссплатформенности. Так и хочется написать что-то серьёзное, чтобы в винде не работало. Имена классов, переменных, функций на кириллице в юникоде понаписать что-ли, как и все строковые переменные. Сторонних библиотек с гитхаба понаподключать нигде про них не упоминая. Чем ни досуг? :)

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #55 : 11 Август 2016, 11:29:07 »

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #56 : 11 Август 2016, 11:42:19 »
Проекты и простенькие 2D игры на Freebasic
тут http://free-basic.ru/project.html
и тут http://games.freebasic.net

Две интересные игры
Стратегия http://games.freebasic.net/dumpbyid.php?input=113
Вариант гибрида тетриса с игрой типа jewels http://free-basic.ru/numbezzled.html

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #57 : 13 Август 2016, 17:22:07 »
Абсолютно бесплатный визуальный дизайнер FireFly (Светлячок) для программирования в Freebasic на чистом Windows API.
http://www.planetsquires.com/firefly_freebasic.html

Скорость  быстродействия Си,  совмещённая  со  скоростью  разработки приложений  на Visual Basic.


http://freebasic.justforum.net/t347-topic





« Последнее редактирование: 13 Август 2016, 17:42:55 от Samovar »

Оффлайн Samovar

  • Житель
Re: Freebasic
« Ответ #58 : 27 Август 2016, 10:46:17 »
Увы, самое большое неудобство в Windows, это, как ни странно,совместимость с MS-DOS, т.е. досовская консоль, и в следствии это путаница с кодировками кириллицы. Кстати, в Си/Си++ та же беда :)  а в Python Блендера вообще непонятно как вывести в консоль русские буквы...
Тут написано про решения для FB: http://free-basic.ru/another.html
На мой взгляд, подключение albom_font.bi, самое простое решение: http://free-basic.ru/user-files/albom_fontFB024.zip

Оффлайн LanuHum

  • Житель
Re: Freebasic
« Ответ #59 : 27 Август 2016, 12:06:50 »
Увы, самое большое неудобство в Windows, это, как ни странно,совместимость с MS-DOS, т.е. досовская консоль, и в следствии это путаница с кодировками кириллицы. Кстати, в Си/Си++ та же беда :)  а в Python Блендера вообще непонятно как вывести в консоль русские буквы...
Тут написано про решения для FB: http://free-basic.ru/another.html
На мой взгляд, подключение albom_font.bi, самое простое решение: http://free-basic.ru/user-files/albom_fontFB024.zip

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

 


* По форуму

* Последние вложения

Mesh.jpg
Скачано: 7
Автор: R_M_S
UNUV.jpg
Скачано: 7
Автор: R_M_S
untitled5.6.jpg
Скачано: 15
Автор: feraeq

Скачано: 47
Автор: Mihanik
2020-11-20_15-21-05.png
Скачано: 45
Автор: Dvergar