Solved

Texture Mapping source code...

Posted on 1998-07-01
5
267 Views
Last Modified: 2013-12-03
I want to get source code of texture mapping in Win32.

<requirement>
source code have to be programed in C.
mapping speed have to be fast(optimized code).
program have to run in Win32 API.
example must be included..

thanks.
0
Comment
Question by:jhjeon
5 Comments
 
LVL 7

Expert Comment

by:BlackMan
ID: 1409251
I don't know if this is what you want:

/*==========================================================================
 *
 *  Copyright (C) 1995, 1996 Microsoft Corporation. All Rights Reserved.
 *
 *  File: tex1.c
 *
 ***************************************************************************/
 
/*
 * A texture mapping example using a cylindrical mapping.
 */
 
#include "rmdemo.h"
 
BOOL
BuildScene(LPDIRECT3DRMDEVICE dev, LPDIRECT3DRMVIEWPORT view,
   LPDIRECT3DRMFRAME scene, LPDIRECT3DRMFRAME camera)
{
    LPDIRECT3DRMMESH mesh = NULL;
    LPDIRECT3DRMMESHBUILDER builder = NULL;
    LPDIRECT3DRMFRAME frame = NULL;
    LPDIRECT3DRMTEXTURE tex = NULL;
    LPDIRECT3DRMMATERIAL mat = NULL;
    LPDIRECT3DRMWRAP wrap = NULL;
    LPDIRECT3DRMLIGHT l1 = NULL;
    LPDIRECT3DRMLIGHT l2 = NULL;
    D3DRMBOX box;
    D3DVALUE miny, maxy;
    D3DVALUE height;
    HRESULT rval;
 
    dev;
    view;
    camera;
 
    if (FAILED(lpD3DRM->lpVtbl->CreateLightRGB(lpD3DRM, D3DRMLIGHT_AMBIENT, D3DVAL(0.2),
                                  D3DVAL(0.2), D3DVAL(0.2), &l1)))
  goto generic_error;
    if (FAILED(scene->lpVtbl->AddLight(scene, l1)))
goto generic_error;
    if (FAILED(lpD3DRM->lpVtbl->CreateFrame(lpD3DRM, scene, &frame)))
goto generic_error;
    if (FAILED(frame->lpVtbl->SetOrientation(frame, scene, -D3DVAL(1), -D3DVAL(1),
                                  D3DVAL(1), D3DVAL(0), D3DVAL(1), D3DVAL(0))))
  goto generic_error;
    if (FAILED(lpD3DRM->lpVtbl->CreateLightRGB(lpD3DRM, D3DRMLIGHT_DIRECTIONAL, D3DVAL(1),
                                  D3DVAL(1), D3DVAL(1), &l2)))
  goto generic_error;
    if (FAILED(frame->lpVtbl->AddLight(frame, l2)))
goto generic_error;
    RELEASE(frame);
 
    if (FAILED(lpD3DRM->lpVtbl->CreateFrame(lpD3DRM, scene, &frame)))
goto generic_error;
    if (FAILED(frame->lpVtbl->SetPosition(frame, scene, D3DVAL(0), D3DVAL(0), D3DVAL(15))))
goto generic_error;
    if (FAILED(frame->lpVtbl->SetRotation(frame, scene, D3DVAL(1.1), D3DVAL(0.3),  
                               D3DVAL(0.0), D3DVAL(0.04))))
       goto generic_error;
 
    if (FAILED(lpD3DRM->lpVtbl->CreateMeshBuilder(lpD3DRM, &builder)))
goto generic_error;
    rval = builder->lpVtbl->Load(builder, "sphere4.x", NULL,
    D3DRMLOAD_FROMFILE, NULL, NULL);
    if (rval != D3DRM_OK) {
        Msg("Failed to load sphere4.x.\n%s", D3DRMErrorToString(rval));
goto ret_with_error;
    }
 
    rval = lpD3DRM->lpVtbl->LoadTexture(lpD3DRM, "tex7.ppm", &tex);
    if (rval != D3DRM_OK) {
        Msg("Failed to load tex7.ppm.\n%s", D3DRMErrorToString(rval));
goto ret_with_error;
    }
    if (FAILED(lpD3DRM->lpVtbl->CreateMaterial(lpD3DRM, D3DVAL(10.0), &mat)))
goto generic_error;
 
    if (FAILED(builder->lpVtbl->SetTexture(builder, tex)))
goto generic_error;
    if (FAILED(builder->lpVtbl->SetMaterial(builder, mat)))
goto generic_error;
    if (FAILED(builder->lpVtbl->SetColorRGB(builder, D3DVAL(1.0), D3DVAL(1.0), D3DVAL(1.0))))
goto generic_error;
 
    if (FAILED(builder->lpVtbl->CreateMesh(builder, &mesh)))
goto generic_error;
    RELEASE(builder);
 
    if (FAILED(mesh->lpVtbl->GetBox(mesh, &box)))
goto generic_error;
    maxy = box.max.y;
    miny = box.min.y;
    height = maxy - miny;
 
    if (FAILED(lpD3DRM->lpVtbl->CreateWrap(lpD3DRM, D3DRMWRAP_CYLINDER, NULL, D3DVAL(0.0),
                              D3DVAL(0.0), D3DVAL(0.0), D3DVAL(0.0),
                              D3DVAL(1.0), D3DVAL(0.0), D3DVAL(0.0),
                              D3DVAL(0.0), D3DVAL(1.0), D3DVAL(0.0),
                              D3DDivide(miny, height), D3DVAL(1.0),
                              D3DDivide(-D3DVAL(1.0), height), &wrap)))
      goto generic_error;
 
    if (FAILED(wrap->lpVtbl->Apply(wrap, (LPDIRECT3DRMOBJECT)mesh)))
goto generic_error;
    if (FAILED(frame->lpVtbl->AddVisual(frame, (LPDIRECT3DRMVISUAL) mesh)))
goto generic_error;
 
    RELEASE(frame);
    RELEASE(wrap);
    RELEASE(mesh);
    RELEASE(tex);
    RELEASE(mat);
    RELEASE(l1);
    RELEASE(l2);
    return TRUE;
generic_error:
    Msg("A failure occurred while building the scene.\n");
ret_with_error:
    RELEASE(mesh);
    RELEASE(builder);
    RELEASE(frame);
    RELEASE(tex);
    RELEASE(mat);
    RELEASE(wrap);
    RELEASE(l1);
    RELEASE(l2);
    return FALSE;
}
 
void
OverrideDefaults(Defaults* defaults)
{
    defaults->bConstRenderQuality = TRUE;
    lstrcpy(defaults->Name, "Texture Mapping Direct3DRM Example");
}

 

0
 

Author Comment

by:jhjeon
ID: 1409252
BlackMan, thanks for your comment
but I don't want Direct3d, OpenGL, Guild etc..
I do not need source code with 3D library ..

I want raw algorithm of texture mapping .
 
0
 
LVL 2

Expert Comment

by:kinkajou
ID: 1409253
True texture mapping onto a polygonal object? As opposed to just bitmapping.
0
 
LVL 4

Accepted Solution

by:
nils pipenbrinck earned 300 total points
ID: 1409254
These two URL's are what you need.

They explain in detail how to write a fast affinite texture mapper (for triangles and n-gons). complete with example sourcecode (for 32-bit dos, but the texturemapper itself works fine under win32).

ftp://us.hornet.org/pub/demos/code/3d/trifill/texmap/fatmap.txt

ftp://us.hornet.org/pub/demos/code/3d/trifill/texmap/fatmap2.zip

Have fun,

  Nils Pipenbrinck
0
 

Author Comment

by:jhjeon
ID: 1409255
nils pipenbrinck, Thanks for your answer!

have a good day !!

0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

If you have ever found yourself doing a repetitive action with the mouse and keyboard, and if you have even a little programming experience, there is a good chance that you can use a text editor to whip together a sort of macro to automate the proce…
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

820 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question