ПрограммированиеФорумГрафика

OpenGL Вопросы (95 стр)

Страницы: 194 95 96 97 98 Следующая »
#1410
(Правка: 17:41) 16:43, 15 сен 2024

Куки это не пуки ... Вот если ты полный гуки то тогда вставляют хренуки  прям в пуки :(

#1411
9:38, 2 окт 2024

1vanK
Сделать через дефайн?

#1412
12:58, 2 окт 2024

1vanK
> У меня про спецификацию вопрос
Спецификация никого ни к чему не обязывает.
Делайте как нравится и не парьтесь.

#1413
15:46, 2 окт 2024

1vanK
Смотри, гл это такая болипопа ... Даже если написано в спеке может вендор учудить

#1414
21:23, 2 окт 2024

1vanK
> шанс того, что у кого-то не заработает
Вот тут:
https://gamedev.ru/flame/forum/?id=283841
мы замеряли частоту кадров, там (43.7z) у меня рисуется в дефолтный фреймбуфер с layout (location = 0) в шейдере.
Там разные видеокарты и у всех всё работало.

#1415
23:26, 4 окт 2024

innuendo
> Смотри, гл это такая болипопа ... Даже если написано в спеке может вендор учудить

Ну да, с остальными такого не бывает, ведь не от драйверов зависит, а от чего-то ещё, видимо магического.

#1416
15:24, 5 окт 2024

innuendo
> Смотри, гл это такая болипопа ... Даже если написано в спеке может вендор учудить
А слышал про плохого танцора? :)

#1417
13:14, 29 окт 2024

Интел у нас по прежнему хромоногий и кривой? Из интереса запустил на uhd 750 свой двиг, и он упал на создании депт-стенцил текстуры при получении биндлесс хендла. При этом все колор текстуры были созданы без проблем.

gi.depthStencil = R_CreateTexture("***depthStencil***", GL_TEXTURE_RECTANGLE, GL_DEPTH24_STENCIL8, GL_DEPTH_STENCIL,
  0, vid.width, vid.height,
  GL_CLAMP_TO_EDGE, GL_CLAMP_TO_EDGE, GL_NEAREST, GL_NEAREST,
  GL_UNSIGNED_INT_24_8, NULL);
\\============

image_t *R_CreateTexture(char *texName, uint targetTex, 
            uint intFormat, uint format, 
            uint flags, uint width, uint height, 
            uint warpS, uint warpT, 
            uint filterMin, uint filterMag, 
            uint imageType, 
            uint *pixdata) {

  int    i;
  image_t* image;
  bool clearData;

  if (!pixdata) {
    pixdata = malloc(vid.width * vid.height * 4 * sizeof(size_t));
    clearData = true;
  }
  else
    clearData = false;

  // find a free image_t
  for (i = 0, image = gi.r_textures; i < gi.r_numTextures; i++, image++) {
    if (!image->texnum)
      break;
  }
  if (i == gi.r_numTextures) {
    if (gi.r_numTextures == MAX_GLTEXTURES)
      VID_Error(ERR_FATAL, "MAX_GLTEXTURES");
    gi.r_numTextures++;
  }
  image = &gi.r_textures[i];

  strcpy(image->name, texName);

  image->width = width;
  image->height = height;
  image->upload_width = width;
  image->upload_height = height;
  image->type = it_screen;
  image->flags = flags;
  image->hash = Com_HashKey(image->name);
  
  image->texType = targetTex;
  image->intFormat = intFormat;
  image->dataType = imageType;

  glCreateTextures(targetTex, 1, &image->texnum);
  glTextureParameteri(image->texnum, GL_TEXTURE_WRAP_S, warpS);
  glTextureParameteri(image->texnum, GL_TEXTURE_WRAP_T, warpT);
  glTextureParameteri(image->texnum, GL_TEXTURE_MIN_FILTER, filterMin);
  glTextureParameteri(image->texnum, GL_TEXTURE_MAG_FILTER, filterMag);

  if (image->flags & IF_MIPMAP) {
    image->numMips = CalcMipmapCount(width, height);
    glTextureParameteri(image->texnum, GL_TEXTURE_BASE_LEVEL, 0);
    glTextureParameteri(image->texnum, GL_TEXTURE_MAX_LEVEL, image->numMips-1);
  }
  else
    image->numMips = 1;

  if(image->flags & IF_SHADOW)
    glTextureParameteri(image->texnum, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_REF_TO_TEXTURE);

  if (targetTex == GL_TEXTURE_CUBE_MAP) {
    int face;
    for (face = 0; face < 6; face++) {
      glTextureStorage2D(image->texnum, 1, intFormat, width, height);
      glTextureSubImage3D(image->texnum, 0, 0, 0, face, width, height, 1, format, imageType, pixdata);
    }
  }
  else {
    glTextureStorage2D(image->texnum, image->numMips, intFormat, width, height);
    glTextureSubImage2D(image->texnum, 0, 0, 0, width, height, format, imageType, pixdata);
  }
  image->handle = glGetTextureHandleARB(image->texnum); \\\==== падение тут
  glMakeTextureHandleResidentARB(image->handle);

  qglObjectLabel(GL_TEXTURE, image->texnum, strlen(image->name), image->name);
  
  if (image->flags & IF_MIPMAP)
    glGenerateTextureMipmap(image->texnum);

  if(clearData)
    free(pixdata);

  return image;

}
#1418
16:31, 29 окт 2024

barnes
Может быть, дело в том, что получать хэндл текстуры и делать её резидентной нужно после создания мипмапов?

#1419
16:59, 29 окт 2024

iw4nna.rock
мипы надо генерить после создания самой текстуры от и до. И да, в данном случае мипы не генерятся. Зачем они при создании депт-стенцил текстуры?

#1420
20:32, 29 окт 2024

barnes
Ну тогда  свою pixdata обнулите.

#1421
21:30, 29 окт 2024

iw4nna.rock
> Ну тогда  свою pixdata обнулите.
Она внизу ф-ции обнуляется если идет выделение. Ага-ага....

#1422
22:17, 29 окт 2024

barnes
> Она внизу ф-ции обнуляется если идет выделение
для текстур под запись не нужно передавать выделенную память. Нужно передать (void*)0 в последний аргумент glTextureSubImage2D. И делать резидентной такую текстуру тоже нельзя.

#1423
3:37, 30 окт 2024

iw4nna.rock
> И делать резидентной такую текстуру тоже нельзя.
такс, а это уже интересно. И как мне ее потом "забиндить" чтобы линейную глубину получить?
iw4nna.rock
> для текстур под запись не нужно передавать выделенную память. Нужно передать (void*)0 в последний аргумент glTextureSubImage2D.
Меня терзают смутные сомнения.

#1424
11:39, 30 окт 2024

barnes
> как мне ее потом "забиндить"
от сердца отрываю:

void bind ( unsigned int slot )
{
  glActiveTexture(GL_TEXTURE0+slot);
  glBindTexture(GL_TEXTURE_2D, id);
  glUniform1i(PROGRAM::p->CTEX[slot], slot);
}

> Меня терзают смутные сомнения
не сомневайтесь

Страницы: 194 95 96 97 98 Следующая »
ПрограммированиеФорумГрафика