نمایش نتایج 1 تا 10 از 10

نام تاپیک: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

  1. #1
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    با سلام خدمت دوستان
    من دارم با استفاده از سی شارپ و opengl یک اتاق ساده طراحی می کنم زمانی که از کدهای زیر برای texture کردن (برای انداختن یک عکس روی دیوار) استفاده می کنم صفحه تاریک میشه (مثل این که شب شده)

    textureImage =
    newBitmap(@"Crate.bmp");
    glEnable(SharpGL.
    OpenGL.TEXTURE_2D);
    // Get one texture id, and stick it into the textures array.
    glGenTextures(1, textures);
    // Bind the texture.
    glBindTexture(SharpGL.OpenGL.TEXTURE_2D, textures[0]);
    // Tell OpenGL where the texture data is.
    glTexImage2D(SharpGL.OpenGL.TEXTURE_2D, 0, 3, textureImage.Width, textureImage.Height, 0, SharpGL.OpenGL.RGB, SharpGL.OpenGL.UNSIGNED_BYTE,
    textureImage.LockBits(
    newRectangle(0, 0, textureImage.Width, textureImage.Height),
    ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb).Scan0);
    glTexParameterf(SharpGL.
    OpenGL.TEXTURE_2D, SharpGL.OpenGL.TEXTURE_MIN_FILTER, SharpGL.OpenGL.LINEAR); // Linear Filtering
    glTexParameterf(SharpGL.OpenGL.TEXTURE_2D, SharpGL.OpenGL.TEXTURE_MAG_FILTER, SharpGL.OpenGL.LINEAR); // Linear Filtering


    کسی می دونه چرا ؟

    در ضمن اگر کسی یک عکس با پسوند bmp برای انداختن رو دیوار داره لطفا بزاره؟

  2. #2

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    1. دستور glTexImage2D رو بعد از صدا مقدار دهی پارامترها تکسچر فراخوانی کن. فراخوانی این دستور قبل از اونها باعث میشه که تکسچر ساخته نیشه.

    2. قبل از رسم شکل مقدار سفید رو به عنوان رنگ انتخاب کن :

     glColor3f(1.0f,1.0f,1.0f);

  3. #3
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    ممنون از توجهتون
    منظورتون به این شکل هست:

    textureImage =
    newBitmap(@"Crate.bmp");
    glEnable(SharpGL.
    OpenGL.TEXTURE_2D);
    // Get one texture id, and stick it into the textures array.
    glGenTextures(1, textures);
    // Bind the texture.
    glBindTexture(SharpGL.OpenGL.TEXTURE_2D, textures[0]);
    glTexParameterf(SharpGL.
    OpenGL.TEXTURE_2D, SharpGL.OpenGL.TEXTURE_MIN_FILTER, SharpGL.OpenGL.LINEAR); // Linear Filtering
    glTexParameterf(SharpGL.OpenGL.TEXTURE_2D, SharpGL.OpenGL.TEXTURE_MAG_FILTER, SharpGL.OpenGL.LINEAR); // Linear Filtering
    //Tell OpenGL where the texture data is.
    glTexImage2D(SharpGL.OpenGL.TEXTURE_2D, 0, 3, textureImage.Width, textureImage.Height, 0, SharpGL.OpenGL.RGB, SharpGL.OpenGL.UNSIGNED_BYTE,
    textureImage.LockBits(
    newRectangle(0, 0, textureImage.Width, textureImage.Height),
    ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb).Scan0);

    اما تغییری صورت نگرفت باز هم در حالت اجرا تاریک میشه(من در مورد انداختن عکس رو صفحه مشکلی ندارم ،مشکل من تو تاریک شدن)

    اینم کدی که باهاش،عکس ر. میزارم رو صفحه.

    glBegin(GL_QUADS);
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
    // Bottom Left Of The Texture and Quad
    glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 1.0f); // Bottom Right Of The Texture and Quad
    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f); // Top Right Of The Texture and Quad
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); ;
    glEnd();

  4. #4

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    نمی دونم چرا پارامتر سوم دستور glTexImage2D رو 3 گذاشتین. داخل این پارامتر باید نوع داده دیتای عسکتون رو بذارید مثلا GL_RGBA:

    http://www.opengl.org/sdk/docs/man/x...TexImage2D.xml

    قبل دستور glBegin هم دستور glColor3f(1.0f,1.0f,1.0f) رو قرار بدین.

    اگر به جای تکسچر یه مورد سیاه نمایش داده میشه این به این معنی هستش که تکسچر ساخته نشده و یا اینکه رنگ سیاه به ورتکسهای داده شده.

  5. #5
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    نمی دونم چرا پارامتر سوم دستور glTexImage2D رو 3 گذاشتین.
    من هم نمی دونم، opengl بلد نیستم، این کد رو هم از یه مثال گرفتم تو اون این طوری بود.
    داخل این پارامتر باید نوع داده دیتای عسکتون رو بذارید مثلا GL_RGBA:
    به نظر شما چی باید بزارم؟
    قبل دستور glBegin هم دستور glColor3f(1.0f,1.0f,1.0f) رو قرار بدین.
    گذاشتم ولی بازهم درست نشد.
    اگر به جای تکسچر یه مورد سیاه نمایش داده میشه این به این معنی هستش که تکسچر ساخته نشده و یا اینکه رنگ سیاه به ورتکسهای داده شده.
    تکسچر نمایش داده میشه ولی تاریک هست و در اون تاریکی تکسچر و سایر موارد دیده میشه.(منظورم این هست که نسبت به قبل از استفاده از تکسچر ، فضا تاریک نشون داده میشه.)
    نمی دونم تونستم منظورم رو برسونم یا نه ؟

  6. #6

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    از نور پردازی استفاده می کنی؟؟

    برای غیر فعال کردنش از دستور زیر استفاده کن:
    glDisable(GL_LIGHTING);

  7. #7
    کاربر دائمی آواتار asefy2008
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    سن
    36
    پست
    729

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    نه،می تونی یه مثال از نورپردازی، لینک بدی ؟

  8. #8

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    مثالهای OpenGL اکثرا بر پایه C++‎ هستن ولی تبدیل کردن اونها به مثالهای C#‎ کاری نداره. سایتهای زیر میتونن کمک زیادی بهت بکنن:

    http://www.codesampler.com/oglsrc.htm
    http://nehe.gamedev.net/

  9. #9
    کاربر دائمی آواتار syntiberium
    تاریخ عضویت
    شهریور 1387
    محل زندگی
    scrin galaxy
    پست
    516

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    با سلام . مي شه لطف كنيد فايل هاي مورد نياز براي opengl در C++‎ را در اينجا لينك بدين . خيلي ممنون مي شم . با تشكر .

  10. #10

    نقل قول: چرا وقتی texture می کنم در اجرا ، صفحه تاریک هست؟

    نقل قول نوشته شده توسط syntiberium مشاهده تاپیک
    با سلام . مي شه لطف كنيد فايل هاي مورد نياز براي opengl در C++‎‎ را در اينجا لينك بدين . خيلي ممنون مي شم . با تشكر .

    برای کار با OpenGL داخل ویژوال استادیو و یا محیطهای دیگه شما نیازی به فایل ندارید تنها کافیه که هدر hl.h رو تعریف کنید و فایل کتابخونه opengl32.lib رو به لینکر معرفی کنید. برای ویژوال استادیو داریم :
    #include <GL/gl.h>
    #pragma comment(lib,"opengl32.lib")


    برای اینکه از ویرایشهای بالاتر از OpenGL 1.2 استفاده کنید باید درایورهای مربوطه رو نصب کنبد و همچنین یا از کتابخونهایی مثل glew و یا glee استفاده کنید و یا اینکه خوتون دستی توابع رو تعریف کنید.

    http://www.opengl.org/sdk/libs/GLEW/

    ممکنه برای کار به OprnGL نیاز به glut داشته باشید اون رو هم میتونید از آدرس زیر بگیرید:

    http://www.opengl.org/resources/libraries/

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •