[1.11.2-1.12] Extreme Energy - почувствуй ток у себя в теле

Как вам мод? Есть перспектива

  • Мод крутой, делай дальше

    Голосов: 21 72.4%
  • Норм

    Голосов: 2 6.9%
  • Что это за испражнение?

    Голосов: 0 0.0%
  • Я хз, тыкну сюда

    Голосов: 6 20.7%

  • Всего проголосовало
    29
1,015
9
102
Может можно как-то скомпилировать асинхронно? Я попытался в новый поток эт кинуть, но там "java.lang.RuntimeException: No OpenGL context found in the current thread"


При компиле я до сих пор рисую тесселятором. Может в этом проблема?
 
2,505
81
397
Нет, тут тесселятором нормально. Можно и асинхронно. Твоя проблема легко гуглится.


На самом деле, лучше в вбошку записывать. И указать GL_DYNAMIC_DRAW (или GL_STREAM_DRAW, если хочешь обновлять каждый кадр) в glBufferData.
 
1,990
18
105
Если уж используешь дисплейлисты - просто разбей свою проекцию на несколько кусков (аля чанки в майне) и собирай их тесселятором по отдельности в разных кадрах в разные дисплейлисты, таких фризов не будет.
Вбошки - круто, но для них надо писать больше кода. Хотя в новых версиях майна не шарю, мб там с этим проще.
 
1,015
9
102
Dahaka написал(а):
Можно и асинхронно. Твоя проблема легко гуглится.

Понял, что над передать контекст в поток. На стак оверфлове, один человек написал, что это надо делать с помощью glfwMakeContextCurrent, но GLFW в LWJGL нет. Как же тогда передать контекст?
 
2,505
81
397
Вообще-то есть. Просто нужен lwjgl 3 ;)
Но тебе нужно это: http://legacy.lwjgl.org/javadoc/org/lwjgl/opengl/Drawable.html
 
1,015
9
102
Так, а как тогда контекст передать? В третей версии есть GLContext.createFromCurrent(), а тут нет
 
808
3
124
Не надо ничего делать из второго контекста OpenGL. Серьезно. ПРОСТО НЕ НАДО. Если будет казаться, что наконец-то всё работает, то знайте: это только мираж. На самом деле, если мод запустит достаточно большое количество людей, то ждут вас только боль и разочарование от бесконечного разглядывания скриншотов со сломанной графикой и крашей хотспота из-за багов в драйверах.

Если правда нужно грузить из другого потока и не помогает просто разбить работу на части поменьше, то от дисплейлистов придется отказаться в пользу VBO, и грузить эти VBO через glMapBuffer() -> отдаем другому потоку заполнять этот буфер -> glUnmapBuffer(). Это рабочий вариант, протестировано на куче народа. А еще протестировано на куче народа немало попыток грузить данные в другом контексте, и выводы неутешительные: это, во-первых, тоже фризит на большом объеме данных, и, во-вторых, работает через раз. А компиляция дисплейлистов из другого потока вообще фризит примерно так же, как и компиляция из основного.
 
2,505
81
397
О, спасибо. Учту. Так и думал, что получу тапком по голове :0
 
691
1
5
Добавь шумы на головку лопаты) (Если что обращайся в ЛС текстуры не ворую, а наоборот я их рисую ;)  )
 
18659388_m.png
 
1,200
37
237
Garik1303 написал(а):
Добавь шумы на головку лопаты) (Если что обращайся в ЛС текстуры не ворую, а наоборот я их рисую ;)  )
 
18659388_m.png

Тогда лучше уж прозрачность 'неоновым' подстветить
 
1,015
9
102
Неоновый не получается сделать с помощью нескольких пикселей) Поэтому шума просто добавлю
 
1,200
37
237
Garik1303 написал(а):
Minebot написал(а):
"Подсветить неоновым"? Это как?

Вот так как-то: "(Сделать более светлым, как будто подсвечиваются")
5776adb0c5283155a7967aa8.jpg



(Я это так понял)


Ну.. я имел в виду сделать рендер предмета в два слоя и в рендере полупрозрачной части включить (или выключить) GL опцию, которая даст такой эффект (вроде gl lighting).
 
1,200
37
237
Minebot написал(а):
Это разве не lightMap?

Не знаю, я навскидку сказал.

Вспомнил это:

GL_BLEND


glBlendFunc(GL_ONE, GL_ONE) - аддиктивное смешивание, то есть сложение нового и старого цвета. Полезно для "энергетических" эффектов вроде огня и электричества.

 
Сверху