war_zes
> Так что как минимум нужно проставлять все основные стейты... чего конечно же в
> уроках про кубик никто не делает.
Вообще то все основные стейты документированны на уровне апи. Например:
https://www.opengl.org/sdk/docs/man/html/glBlendFunc.xhtml
sFactor The initial value is GL_ONE.
dFactor The initial value is GL_ZERO.
Кроме того все новые фичи в стейтах должны быть выключены по дефолту, ибо поломают старый код.
MrShoor
> Вообще то все основные стейты документированны на уровне апи. Например:
Что ты этим хотел сказать? в DX тоже самое
https://msdn.microsoft.com/en-us/library/windows/desktop/ff476462(v=vs.85).aspx
State Default Value
AlphaToCoverageEnable FALSE
IndependentBlendEnable FALSE
RenderTarget[0].BlendEnable FALSE
RenderTarget[0].SrcBlend D3D11_BLEND_ONE
RenderTarget[0].DestBlend D3D11_BLEND_ZERO
RenderTarget[0].BlendOp D3D11_BLEND_OP_ADD
RenderTarget[0].SrcBlendAlpha D3D11_BLEND_ONE
RenderTarget[0].DestBlendAlpha D3D11_BLEND_ZERO
RenderTarget[0].BlendOpAlpha D3D11_BLEND_OP_ADD
RenderTarget[0].RenderTargetWriteMask D3D11_COLOR_WRITE_ENABLE_ALL
Кого волнует дефолтные значения?
То есть можно написать (да - именно одной строчкой как в OGL)
ID3D11DeviceContext::OMSetBlendState(0, color, 0xffffffff);
И этим поставить дефолтный блендинг.
Но в примерах никто так не будет делать - никому не важны дефолтные значения больше чем для справки
В реальном приложении ты все равно будешь писать столько же кода сколько в DX. Потому что иначе будут измененные стейты о которых ты не знаешь.
Например ты выключил блендинг... Значит ты его должен включить позже. Вот и две строчки. Ты изменил параметры блендинга, значит должен вернуть старые... вот еще куча строк. И этих строк нет в примере кубика - поэтому и кажется что кубик на OGL выводится меньшим числом строк кода.
war_zes
> Ага, а потом гадать, откуда вылезли баги....
В который раз пишу, это лично твоя проблема, что ты не хочешь понимать и разбираться. Хочешь на всём готовом выезжать. Если бы ты писал про баги - я бы с тобой согласился...
И да, пример про кубик - он совсем не про стейты. А про Begin/End
> В реальном приложении ты все равно будешь писать столько же кода сколько в DX
Ну что же, давай сравним: есть шейдера VS/HS/DS/GS/PS - в GL это ставится за один вызов, сколько в DX ?
Даже просто VS/PS
innuendo
> Ну что же, давай сравним: есть шейдера VS/HS/DS/GS/PS - в GL это ставится за
> один вызов, сколько в DX ?
> Даже просто VS/PS
ну конечно, а атачим мы шейдеры ну вообще без кода... И мне надоело с тобой спорить, ты вечно про какие-то glBegin пишешь.
В том же OGL 4.4 количество строк кода уже почти равно количеству строк кода на DX 11
DX11
OGL
Привет всем, тут возник такой вопрос по поводу нового АПИ. Что кому известно про него? Как он работает? Будет ли он как и ОГЛ в формате драйвера только под видеокарты нового поколения или же будет распространяться как надстройка в виде АПИ над ОГЛ, связывая при этом все версии GL в одной библиотеке - тобиш не зависимо от версии видеокарты, просто ставишь библиотеку и пользуешься?
temakonkin
> или же будет распространяться как надстройка в виде АПИ над ОГЛ, связывая при
> этом все версии GL в одной библиотеке - тобиш не зависимо от версии видеокарты,
> просто ставишь библиотеку и пользуешься?
Нет
temakonkin
> Будет ли он как и ОГЛ в формате драйвера только под видеокарты нового поколения
Да. Вопрос только какое поколение под него уложится, но похоже то же что и для Mantle.
=A=L=X=
> Да. Вопрос только какое поколение под него уложится, но похоже то же что и для
> Mantle.
где-то вроде писали - все что держит OGL 4.2
=A=L=X=
> Да. Вопрос только какое поколение под него уложится, но похоже то же что и для
> Mantle.
В таком случае его не год и не два ждать..... Пока это народ прикупит новые видюшки с вулканом.
Печально это всё.
temakonkin
> В таком случае его не год и не два ждать..... Пока это народ прикупит новые
> видюшки с вулканом.
Да, полный переход состоится года через 3.
Сейчас же всё будет держаться на рекламе и заинтересованности крупных разрабов. Интерес уже проявили Valve, Epic и по сути все кто уже выпустил игры с поддержкой Mantle.
war_zes
> В том же OGL 4.4 количество строк кода уже почти равно количеству строк кода на
> DX 11
g_pImmediateContext->VSSetShader( g_pVertexShader, NULL, 0 ); g_pImmediateContext->PSSetShader( g_pPixelShader, NULL, 0 ); g_pImmediateContext->DSSetShader( g_pDomainShader, NULL, 0 ); g_pImmediateContext->HSSetShader( g_pHullShader, NULL, 0 ); g_pImmediateContext->GSSetShader( g_pGeometryShader, NULL, 0 );
glUseProgram(id)
Есть разница ?
Теперь покажи работу с msaa/atoc/depth bias
innuendo
> Есть разница ?
да есть, потому что ты снова забыл glAttachShader
war_zes
> да есть, потому что ты снова забыл glAttachShader
Это нужно только при создании program object. Я же говорю о рабочей точке
innuendo
> Это нужно только при создании program object. Я же говорю о рабочей точке
мы тут говорил о количестве строк кода, а не количестве операций при рендере.
По количеству строк кода OGL будет больше, выше я показал... даже если выкинуть из примере ProgramPipeline
VSSetShader и подобное, я тоже напишу один раз. просто я напишу это в Render. Ты напишешь glAttachShader в Create.
war_zes
> даже если выкинуть из примере ProgramPipeline
Забавно, когда на GL пишут в DX стиле :)
> По количеству строк кода OGL будет больше, выше я показал...
Давай, покажи дальше про msaa и тд
innuendo
> Забавно, когда на GL пишут в DX стиле :)
чем тебе не нравится glGenProgramPipelines/glUseProgramStages/glBindProgramPipeline ?
Именно тем что DX стиль?
А DSA тогда что?
innuendo
> Давай, покажи дальше про msaa и тд
Я не умею на OGL msaa... но точно знаю что в DX делается одним флагом.. а на OGL там надо что-то с контектсами и/или пиксельным форматом