Используя GLEW для использования расширений OpenGL в соответствии с Windows

Сначала я предложил использовать окно .expanding(), но это явно не нужно для встроенных в .cumprod() и .cummax() встроенных ins для вычисления максимального просадки до любой заданной точки:

df = pd.DataFrame(data={'returns': np.random.normal(0.001, 0.05, 1000)}, index=pd.date_range(start=date(2016,1,1), periods=1000, freq='D'))

df = pd.DataFrame(data={'returns': np.random.normal(0.001, 0.05, 1000)},
                  index=pd.date_range(start=date(2016, 1, 1), periods=1000, freq='D'))
df['cumulative_return'] = df.returns.add(1).cumprod().subtract(1)
df['max_drawdown'] = df.cumulative_return.add(1).div(df.cumulative_return.cummax().add(1)).subtract(1)

            returns  cumulative_return  max_drawdown
2016-01-01 -0.014522          -0.014522      0.000000
2016-01-02 -0.022769          -0.036960     -0.022769
2016-01-03  0.026735          -0.011214      0.000000
2016-01-04  0.054129           0.042308      0.000000
2016-01-05 -0.017562           0.024004     -0.017562
2016-01-06  0.055254           0.080584      0.000000
2016-01-07  0.023135           0.105583      0.000000
2016-01-08 -0.072624           0.025291     -0.072624
2016-01-09 -0.055799          -0.031919     -0.124371
2016-01-10  0.129059           0.093020     -0.011363
2016-01-11  0.056123           0.154364      0.000000
2016-01-12  0.028213           0.186932      0.000000
2016-01-13  0.026914           0.218878      0.000000
2016-01-14 -0.009160           0.207713     -0.009160
2016-01-15 -0.017245           0.186886     -0.026247
2016-01-16  0.003357           0.190869     -0.022979
2016-01-17 -0.009284           0.179813     -0.032050
2016-01-18 -0.027361           0.147533     -0.058533
2016-01-19 -0.058118           0.080841     -0.113250
2016-01-20 -0.049893           0.026914     -0.157492
2016-01-21 -0.013382           0.013173     -0.168766
2016-01-22 -0.020350          -0.007445     -0.185681
2016-01-23 -0.085842          -0.092648     -0.255584
2016-01-24  0.022406          -0.072318     -0.238905
2016-01-25  0.044079          -0.031426     -0.205356
2016-01-26  0.045782           0.012917     -0.168976
2016-01-27 -0.018443          -0.005764     -0.184302
2016-01-28  0.021461           0.015573     -0.166797
2016-01-29 -0.062436          -0.047836     -0.218819
2016-01-30 -0.013274          -0.060475     -0.229189
...              ...                ...           ...
2018-08-28  0.002124           0.559122     -0.478738
2018-08-29 -0.080303           0.433921     -0.520597
2018-08-30 -0.009798           0.419871     -0.525294
2018-08-31 -0.050365           0.348359     -0.549203
2018-09-01  0.080299           0.456631     -0.513004
2018-09-02  0.013601           0.476443     -0.506381
2018-09-03 -0.009678           0.462153     -0.511158
2018-09-04 -0.026805           0.422960     -0.524262
2018-09-05  0.040832           0.481062     -0.504836
2018-09-06 -0.035492           0.428496     -0.522411
2018-09-07 -0.011206           0.412489     -0.527762
2018-09-08  0.069765           0.511031     -0.494817
2018-09-09  0.049546           0.585896     -0.469787
2018-09-10 -0.060201           0.490423     -0.501707
2018-09-11 -0.018913           0.462235     -0.511131
2018-09-12 -0.094803           0.323611     -0.557477
2018-09-13  0.025736           0.357675     -0.546088
2018-09-14 -0.049468           0.290514     -0.568542
2018-09-15  0.018146           0.313932     -0.560713
2018-09-16 -0.034118           0.269104     -0.575700
2018-09-17  0.012191           0.284576     -0.570527
2018-09-18 -0.014888           0.265451     -0.576921
2018-09-19  0.041180           0.317562     -0.559499
2018-09-20  0.001988           0.320182     -0.558623
2018-09-21 -0.092268           0.198372     -0.599348
2018-09-22 -0.015386           0.179933     -0.605513
2018-09-23 -0.021231           0.154883     -0.613888
2018-09-24 -0.023536           0.127701     -0.622976
2018-09-25  0.030160           0.161712     -0.611605
2018-09-26  0.025528           0.191368     -0.601690

23
задан Community 23 May 2017 в 12:33
поделиться

2 ответа

Да, Расширение OpenGL Библиотека Рэнглера (GLEW) является безболезненным способом использовать расширения OpenGL в Windows. Вот то, как начать на нем:

Определяют расширение OpenGL и дополнительные API, которые Вы хотите использовать. Расширения OpenGL перечислены в Проверка Реестра .

Расширения OpenGL, если Ваша видеокарта поддерживает расширения, Вы хотите использовать. Загрузите и установите последние драйверы и SDKs для Вашей видеокарты.

Последние версии поставка NVIDIA OpenGL SDK с GLEW. Если Вы используете это, то Вы не должны делать некоторых следующих шагов.

Загрузка GLEW и разархивировали его.

Добавляют мусорное ведро GLEW путь к Вашему Windows PATH переменная среды. С другой стороны, можно также поместить glew32.dll в каталоге, где Windows берет свой DLLs.

Добавляют, что GLEW включает , путь к Вашему компилятору включает список каталога.

Добавляют lib GLEW путь к списку каталога библиотеки Вашего компилятора.

Дают Вашему компилятору команду использовать glew32.lib во время соединения. При использовании компиляторов Visual C++ тогда один способ сделать, это путем добавления следующей строки к коду:

#pragma comment(lib, "glew32.lib")

Добавляют #include <GL/glew.h> строка к Вашему коду. Удостоверьтесь, что это помещается выше того, чтобы включать других заголовочных файлов GL. (Вам, возможно, не на самом деле понадобятся заголовочные файлы GL, включает, если Вы включаете glew.h.)

Инициализируют GLEW использование glewInit() после инициализации ИЗБЫТКА или GL. Если это перестало работать, то что-то неправильно с Вашей установкой.

if (GLEW_OK != glewInit())
{
    // GLEW failed!
    exit(1);
}

Проверка, если расширение (расширения) Вы хотите использовать, теперь доступна через GLEW. Вы делаете это путем проверки логической переменной, названной GLEW_your_extension_name, который представлен GLEW.

Пример:

if (!GLEW_EXT_framebuffer_object)
{
    exit(1);
}

Вот именно! Можно теперь использовать вызовы расширения OpenGL в коде так же, как если бы они существовали естественно для Windows.

33
ответ дан Ashwin Nanjappa 29 November 2019 в 02:01
поделиться

Лично я не использовал бы команду выхода.

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

т.е.:

try
{
    // init opengl/directx
    // init directaudio
    // init directinput

    if (GLEW_OK != glewInit())
    {
        throw std::exception("glewInit failed");
    }
}
catch ( const std::exception& ex )
{
    // message to screen using ex.what()
    // clear up
}

И я соглашаюсь с OJ - если Вы хотите записать учебные руководства для других, тогда это - действительно неправильное место для него. Уже существует загрузка хороших мест для opengl учебных руководств. Попытка этот, например .

5
ответ дан graham.reeds 29 November 2019 в 02:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: