سؤال

أواجه مشكلات في محاولة لتحميل نسيج في VRAM. أنا أستخدم OpenGL على Mac OS X. لدي هندسة نجحت في نقلها عن طريق تمرير لون إلى تظليل شظاياي. ومع ذلك ، بمجرد أن أحاول تحميل نسيج ، لا يتم تقديم أي هندسة ولا يمكنني رؤية لون الخلفية إلا. إليك رمز تحميل الملمس:

char imageData[27] = {
    127, 127, 127,
    127, 127, 127,
    127, 127, 127,
    127, 127, 127,
    127, 127, 127,
    127, 127, 127,
    127, 127, 127,
    127, 127, 127,
    127, 127, 127,
};

glActiveTexture(GL_TEXTURE0);
GLuint textureID;
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 3, 3, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);

GLint uniform_location = glGetUniformLocation(bundle->GetShaderProgramID(), "texture");
std::cout << uniform_location <<std::endl;
glUniform1i(uniform_location, 0);

glEnable(GL_TEXTURE_2D);

وإليك رمز تظليل الشظايا الخاص بي:

uniform sampler2D texture;

void main()
{
    vec2 coord = vec2(0.5, 0.5);

    //gl_FragColor = vec4(coord, 0.0, 1.0);

    gl_FragColor = vec4(texture2D(texture, coord).rgb, 1.0);
}

أدرك أن بعض هذا الرمز ربما ليس ضروريًا ، لكنني كنت أحاول كل ما يمكنني التفكير فيه.

شكرًا.

هل كانت مفيدة؟

المحلول

السبب الأكثر ترجيحًا هو أنه ليس لديك mipmapping ، ولم تحدد مستويات MIPMapping. لذا فإن نسيجك غير مكتمل.

لإيقاف تشغيله على كائن الملمس هذا (المراد القيام به حول مكالمة glteximage2d)

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

لكنك تدرك أن "كل شيء ينهار" لا يساعد على الإطلاق في معرفة ما تراه؟ بشكل عام ، تبلغ قيمة لقطة الشاشة ألف كلمة ، ولكنها تقل عن ذلك ، على الأقل تصف كيف يفشل سوف يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top