Я использую один шейдер, который пишет в 5 различных текстурах, связанных с FBO. Иногда я хочу игнорировать выходные значения, то есть в месте = 0 . Я установил это с этим: < /p>
GL.DrawBuffers(5, new[] {
DrawBuffersEnum.None,
DrawBuffersEnum.ColorAttachment5,
DrawBuffersEnum.ColorAttachment1,
DrawBuffersEnum.None,
DrawBuffersEnum.None,
});
< /code>
Согласно спецификации GLSL, это должно игнорировать вывод для местоположения 0, 3 и 4, но у меня есть Silent Opengl Crash: после рендеринга не работает. Журнал отладки OpenGL ничего не дает, как и Geterror. < /P>
Чего мне не хватает? Путь: < /p>
_textureID = new int[count];
GL.GenTextures(count, _textureID);
for (int i = 0; i < count; i++)
{
GL.BindTexture(TextureTarget.Texture2D, _textureID);
if (alpha)
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba32f, TextureSize.Width,
TextureSize.Height, 0, PixelFormat.Rgba, PixelType.Float, IntPtr.Zero);
else
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgb32f,
TextureSize.Width, TextureSize.Height, 0, PixelFormat.Rgb, PixelType.Float, IntPtr.Zero);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)Filter);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)Filter);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.ClampToBorder);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.ClampToBorder);
}
< /code>
и fbo: < /p>
GL.GenFramebuffers(1, out _fboID);
//attach color textures
GL.BindFramebuffer(FramebufferTarget.FramebufferExt, _fboID);
for (int i = 0; i < attachments; i++)
GL.FramebufferTexture2D(FramebufferTarget.FramebufferExt, FramebufferAttachment.ColorAttachment0 + i,
textureTarget, _textureID, 0);
Подробнее здесь: https://stackoverflow.com/questions/796 ... hes-opengl
Gl.drawbuffers с drawbuffersenum.none cashes openglg ⇐ C#
Место общения программистов C#
-
Anonymous
1751160388
Anonymous
Я использую один шейдер, который пишет в 5 различных текстурах, связанных с FBO. Иногда я хочу игнорировать выходные значения, то есть в месте = 0 . Я установил это с этим: < /p>
GL.DrawBuffers(5, new[] {
DrawBuffersEnum.None,
DrawBuffersEnum.ColorAttachment5,
DrawBuffersEnum.ColorAttachment1,
DrawBuffersEnum.None,
DrawBuffersEnum.None,
});
< /code>
Согласно спецификации GLSL, это должно игнорировать вывод для местоположения 0, 3 и 4, но у меня есть Silent Opengl Crash: после рендеринга не работает. Журнал отладки OpenGL ничего не дает, как и Geterror. < /P>
Чего мне не хватает? Путь: < /p>
_textureID = new int[count];
GL.GenTextures(count, _textureID);
for (int i = 0; i < count; i++)
{
GL.BindTexture(TextureTarget.Texture2D, _textureID[i]);
if (alpha)
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba32f, TextureSize.Width,
TextureSize.Height, 0, PixelFormat.Rgba, PixelType.Float, IntPtr.Zero);
else
GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgb32f,
TextureSize.Width, TextureSize.Height, 0, PixelFormat.Rgb, PixelType.Float, IntPtr.Zero);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)Filter);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)Filter);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.ClampToBorder);
GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.ClampToBorder);
}
< /code>
и fbo: < /p>
GL.GenFramebuffers(1, out _fboID);
//attach color textures
GL.BindFramebuffer(FramebufferTarget.FramebufferExt, _fboID);
for (int i = 0; i < attachments; i++)
GL.FramebufferTexture2D(FramebufferTarget.FramebufferExt, FramebufferAttachment.ColorAttachment0 + i,
textureTarget, _textureID[i], 0);
Подробнее здесь: [url]https://stackoverflow.com/questions/79676391/gl-drawbuffers-with-drawbuffersenum-none-crashes-opengl[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия