ну чо опять началось-то нормально же сидели
Чем отличаются эти две картинки, кроме разрешения?
А что не так? Вторая не зеленой должна быть?
Они одной и той же программой сохранены?
Зелёная это из-за освещения.
Она не должна быть перекошенной и в полосочку. Это же обычный BMP 24 bit. Чё с ним может быть не так?
Только что пересоранил обе картинки в фотошопе (в одинаковые форматы!). Одна нормально отображается, а вторая перекошенная
Из предоставленной информации видимые отличия:
имя файла и разрешение.
А то что фото перекошено, так может ваш код именно к количеству пикселей и привязан…
Мы то этого не знаем.
ни к чему он не привязан.
другие картинки нормально грузятся.
Я б попробовал например сохранить в другой формат и из него в бмп.
Может там что-то странное/экзотическое внутри и при просто пересохранении оно осталось.
Или более простым ПО.
я и в делфи пробовал сохранять
Очень может быть. Стеганография например.
Чего экзотического может быть в битмапе? Он ведь даже не сжатый.
Это обычный скриншот из видео, полученный и обрезанный тем же способом, что и второй.
код выкладывайте. Иначе эти гадания на кофейной гуще могут продолжаться вечно.
Сейчас открыл эту картинку в пэинте и сохранил ее в три формата - PNG, BMP, JPG. PNG отображается нормально, а остальные - нет! Даже если читать битмап виндоовыми функциями и вручную переворачивать красный и синий.
Хотя другие JPG / BMP нормально отображаются.
GLuint LoadTexture(std::string fileName)
{
int imageWidth;
int imageHeight;
int imageChannelsCount;
stbi_set_flip_vertically_on_load(true);
unsigned char* imageData = stbi_load(fileName.c_str(), &imageWidth, &imageHeight, &imageChannelsCount, 0);
if (imageData)
{
GLuint hTexture;
glGenTextures(1, &hTexture);
if (hTexture)
{
glBindTexture(GL_TEXTURE_2D, hTexture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
int format = imageChannelsCount == 4 ? GL_RGBA : GL_RGB;
glTexImage2D(GL_TEXTURE_2D, 0, imageChannelsCount,
imageWidth, imageHeight, 0,
format, GL_UNSIGNED_BYTE, imageData);
glBindTexture(GL_TEXTURE_2D, 0);
}
stbi_image_free(imageData);
return hTexture;
}
return 0;
}
void DestroyTexture(GLuint textureId)
{
glDeleteTextures(1, &textureId);
}
Ничего необычного.
И чему равен формат когда каждую из картинок загружаете?
Количеству каналов в картинке. Переменные же с нормальными именами. Для BMP / JPG imageChannelsCount
равно 3. Для PNG с альфой - 4. От этого format
, соответственно, либо GL_RGB
, либо GL_RGBA
.
Но я и вручную подставлял - разницы не было. При совсем неправильных значениях - просто падает.
Не помогает! То же самое. Только в хексе несколько байт в заголовке меняются при сохранении пэинтом. Фотошоп немного другой заголовок пишет.
А размер текстуры?? Что то я смутно помню что он должен быть кратен 2. Или степенью 2.
так и третью тогда выкладывайте которая кривая
а как файл можете приложить а то ее движок переработал под себя. Лучше в архиве все три фотки
Ну сделайте ширину кратную 2.