elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Temas
Páginas: 1 2 3 4 [5]
41  Programación / Programación C/C++ / Busco a alguien que esté aprendiendo a usar OpenGL en: 1 Enero 2015, 10:56 am
Hola, ¡muy buenas programadores! Hoy estoy buscando a alguien que esté aprendiendo a usar OpenGL y esté interesado en trabajar en equipo conmigo. Porque una parte muy importante de la programación es hacer equipos y así aprender unos de otros. Yo también estoy aprendiendo a usar OpenGL.

Busco personas que sepan C++.

¡MUCHAS GRACIAS POR SU ATENCIÓN!  :D
42  Programación / Programación C/C++ / (Ayuda) Entender un código en: 6 Diciembre 2014, 00:33 am
Hola, ¡muy buenas forer@s! Hoy os traigo una duda un tanto elemental, es decir, bastante básica a mi parecer.

Me preguntaba si alguien tendría la amabilidad de explicarme este código. He de decir que ando muy perdido en cuanto a librerías en C++, puesto que he pasado de programar con iostream a programar con la API de Windows y OpenGL. Bueno, aquí os dejo el código (me podéis explicar, si queréis, siendo técnicos, para que tengáis que escribir menos):

Código
  1. bool CShader::loadShader(string sFile, int a_iType)
  2. {
  3.   FILE* fp = fopen(sFile.c_str(), "rt");
  4.   if(!fp)return false;
  5.  
  6.   // Get all lines from a file
  7.  
  8.   vector<string> sLines;
  9.   char sLine[255];
  10.   while(fgets(sLine, 255, fp))sLines.push_back(sLine);
  11.   fclose(fp);
  12.  
  13.   const char** sProgram = new const char*[ESZ(sLines)];
  14.   FOR(i, ESZ(sLines))sProgram[i] = sLines[i].c_str();
  15.  
  16.   uiShader = glCreateShader(a_iType);
  17.  
  18.   glShaderSource(uiShader, ESZ(sLines), sProgram, NULL);
  19.   glCompileShader(uiShader);
  20.  
  21.   delete[] sProgram;
  22.  
  23.   int iCompilationStatus;
  24.   glGetShaderiv(uiShader, GL_COMPILE_STATUS, &iCompilationStatus);
  25.  
  26.   if(iCompilationStatus == GL_FALSE)return false;
  27.   iType = a_iType;
  28.   bLoaded = true;
  29.  
  30.   return 1;
  31. }

Notas:
* No hace falta que me expliqueis esto: uiShader = glCreateShader(a_iType), esto: glShaderSource(uiShader, ESZ(sLines), sProgram, NULL); ni esto: glCompileShader(uiShader);

* Explicad solo lo que sepais, y así todos podrán ayudar y nadie se confundirá ;)

¡MUCHAS GRACIAS POR SU ATENCIÓN Y POR SU AYUDA!
43  Programación / Programación C/C++ / (Ayuda - OpenGL) Problemas de vocabulario en: 29 Noviembre 2014, 20:41 pm
Hola, ¡muy buenas a todos! Hoy os vengo a preguntar una duda. El caso es que estoy traduciendo un documento que trata el OpenGL moderno, pero me he encontrado con un término que se que significa, pero no le encuentro una traducción literal. El término en cuestión es Scan convertion.

Os digo que significa: Es transformar las coordenadas en ventana(flotantes) a coordenadas en ventana (enteras)

Os dejo una imagen bastante descriptiva:



También os dejo la definición literal de la página: The process of taking a triangle in window space and converting it into a number of fragments based on projecting it onto the pixels of the output image


Espero que me puedan ayudar. ¡MUCHAS GRACIAS POR PASAROS!
44  Programación / Programación C/C++ / (Ayuda) Visual Studio y su autocorrección en: 26 Octubre 2014, 00:11 am
Hola, amigos! Hoy he decidido cambiar de IDE y compilador (antes usaba code::blocks). Me he cambiado a Visual Studio Express 2013, y tengo una duda sobre los tabuladores.

Cuando yo escribo ":" (sin comillas), me salta un tabulador hacia atras, cosa que no me gusta.

Ejemplo:


Código
  1. switch(Variable) {
  2.    case 1: // De esto pasa a...
  3.        ...
  4.  
  5.        break;
  6. }

Código
  1. switch(Variable) {
  2. case 1: // Esto
  3.    ...
  4.  
  5.    break;
  6. }



Tambien hay otra cosa que no me gusta, y es que despues de un if, while, for o cualquer controlador de flujo, me pone un espacio entre ese if y el parentesis

Ejemplo:
Código
  1. if(Variable > 1) // De esto pasa a...{
  2.    ...
  3. }

Código
  1. if (Variable > 1) // Esto{
  2.    ...
  3. }


Me gustaría ver si me pueden decir como omito estas "autocorrecciones", porque me resultan muy molestas...

Muchas gracias :D
45  Programación / Programación C/C++ / Donde conseguir un tutorial de OpenGL 4.1 en: 15 Octubre 2014, 23:02 pm
Hola, ¡muy buenas, foro! He estado buscando mucho por Google un tutorial sobre OpenGL 4.1 usando glext, pero no he encontrado gran cosa en español... Mi petición sería que me pasaseis algún tutorial o algo que conozcais sobre OpenGL (4.1 o 3.3) usando la librería glext.h y wglext.h Y sería maravilloso si se usara solo la API de Windows, no librerías como FreeGlut, o Glew

Por favor, estoy deseando meterme en el mundo de OpenGL, pero Glut, ni glew me gustan porque me quitan demasiado control a mi gusto :P


¡MUCHAS GRACIAS POR SU COLABORACIÓN!
46  Programación / Programación C/C++ / (Ayuda, otra vez...) Versión mas reciente de OpenGL en: 7 Octubre 2014, 01:29 am
Hola, muy buenas de nuevo! Se que soy un poco pesado porque pregunto demasiadas dudas, pero estoy algo "verde" en cuanto a OpenGL se refiere. He estado mirando en el interior de la libreria de OpenGL incluida en mi CodeBlock y me he fijado en esta macro:

Código
  1. #define GL_VERSION_1_2   1
  2. #define GL_VERSION_1_3   1

Creo que esta librería está basada en OpenGL 1.3, y ya estamos por la 4.5 xD

Mi duda es como descargo la versión 4.4 de esta librería (Mi tarjeta gráfica soporta hasta OpenGL 4.4)

Espero que me orienten un poco, que estoy muy verde con OpenGL :D

Muchas gracias por la paciencia!
47  Programación / Programación C/C++ / (Ayuda) Sentar las bases en OpenGL en: 6 Octubre 2014, 00:47 am
Hola, muy buenas forer@s! Hoy os quería preguntar si me pudieseis pasar un tutorial sobre OpenGL. Ya se que me vais a decir que busque en Google, pero no he encontrado lo que yo quiero! Lo que me gustaría tener es un tutorial de OpenGL ("el nuevo OpenGL", no el antiguo debido a que lo cambiaron mucho) que explicara el OpenGL, no las funciones. Lo que quiero saber es como funciona el sistema de matrices, tanto en modelado, visión, luz...

Espero haberme aclarado y también espero sus maravillosas respuestas!

Un saludo de alguien que quiere aprender un montón!
48  Programación / Programación C/C++ / (Ayuda) Diferencias entre crear un Menu con un resource y con funciones en: 30 Septiembre 2014, 22:14 pm
Hola, muy buenas foreros! Hoy os quisiera preguntar una duda, probablemente, bastante simple. ¿Podeis decirme que ventajas tiene crear un menú con archivos *.rc y crearlos directamente con la API de Windows? Obviamente, crear un menú con los archivos *.rc es más sencillo (a mi parecer), entonces, para que se usa el otro método?

Espero que haya quedado claro! Muchas gracias por leerlo!




(Espero que esto no sea 'crap'...)
49  Programación / Programación C/C++ / Comprensión del OpenGL + Win32 en: 27 Septiembre 2014, 00:56 am
Comprensión del OpenGL + API Win32

Hola a tod@s! Soy nuevo en este foro. Soy un chico al que le gusta mucho programar,  y ahora le gustaría más que nada saber como programar con gráficos! Mi duda o petición es ver si me podéis explicar el Hello World del OpenGL + API Win32.

La situación es que yo se la estructura básica de una aplicación Win32, y tambien los fundamentos del OpenGL, pero no se como unir las dos cosas.

Este es el Hello World:

Código
  1. #include <windows.h>
  2. #include <gl/gl.h>
  3.  
  4. LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);
  5. void EnableOpenGL(HWND hwnd, HDC*, HGLRC*);
  6. void DisableOpenGL(HWND, HDC, HGLRC);
  7.  
  8.  
  9. int WINAPI WinMain(HINSTANCE hInstance,
  10.                    HINSTANCE hPrevInstance,
  11.                    LPSTR lpCmdLine,
  12.                    int nCmdShow)
  13. {
  14.    WNDCLASSEX wcex;
  15.    HWND hwnd;
  16.    HDC hDC;
  17.    HGLRC hRC;
  18.    MSG msg;
  19.    BOOL bQuit = FALSE;
  20.    float theta = 0.0f;
  21.  
  22.    /* register window class */
  23.    wcex.cbSize = sizeof(WNDCLASSEX);
  24.    wcex.style = CS_OWNDC;
  25.    wcex.lpfnWndProc = WindowProc;
  26.    wcex.cbClsExtra = 0;
  27.    wcex.cbWndExtra = 0;
  28.    wcex.hInstance = hInstance;
  29.    wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
  30.    wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
  31.    wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
  32.    wcex.lpszMenuName = NULL;
  33.    wcex.lpszClassName = "GLSample";
  34.    wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);;
  35.  
  36.  
  37.    if (!RegisterClassEx(&wcex))
  38.        return 0;
  39.  
  40.    /* create main window */
  41.    hwnd = CreateWindowEx(0,
  42.                            "GLSample",
  43.                            "OpenGL Sample",
  44.                            WS_OVERLAPPEDWINDOW,
  45.                            CW_USEDEFAULT,
  46.                            CW_USEDEFAULT,
  47.                            256,
  48.                            256,
  49.                            NULL,
  50.                            NULL,
  51.                            hInstance,
  52.                            NULL);
  53.  
  54.    ShowWindow(hwnd, nCmdShow);
  55.  
  56.    /* enable OpenGL for the window */
  57.    EnableOpenGL(hwnd, &hDC, &hRC);
  58.  
  59.    /* program main loop */
  60.    while (!bQuit)
  61.    {
  62.        /* check for messages */
  63.        if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
  64.        {
  65.            /* handle or dispatch messages */
  66.            if (msg.message == WM_QUIT)
  67.            {
  68.                bQuit = TRUE;
  69.            }
  70.            else
  71.            {
  72.                TranslateMessage(&msg);
  73.                DispatchMessage(&msg);
  74.            }
  75.        }
  76.        else
  77.        {
  78.            /* OpenGL animation code goes here */
  79.  
  80.            glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
  81.            glClear(GL_COLOR_BUFFER_BIT);
  82.  
  83.            glPushMatrix();
  84.            glRotatef(theta, 0.0f, 0.0f, 1.0f);
  85.  
  86.            glBegin(GL_TRIANGLES);
  87.  
  88.                glColor3f(1.0f, 0.0f, 0.0f);    glVertex2f(0.0f, 1.0f);
  89.                glColor3f(0.0f, 1.0f, 0.0f);    glVertex2f(0.87f, -0.5f);
  90.                glColor3f(0.0f, 0.0f, 1.0f);    glVertex2f(-0.87f, -0.5f);
  91.  
  92.            glEnd();
  93.  
  94.            glPopMatrix();
  95.  
  96.            SwapBuffers(hDC);
  97.  
  98.            theta += 1.0f;
  99.            Sleep (1);
  100.        }
  101.    }
  102.  
  103.    /* shutdown OpenGL */
  104.    DisableOpenGL(hwnd, hDC, hRC);
  105.  
  106.    /* destroy the window explicitly */
  107.    DestroyWindow(hwnd);
  108.  
  109.    return msg.wParam;
  110. }
  111.  
  112. LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
  113. {
  114.    switch (uMsg)
  115.    {
  116.        case WM_CLOSE:
  117.            PostQuitMessage(0);
  118.        break;
  119.  
  120.        case WM_DESTROY:
  121.            return 0;
  122.  
  123.        case WM_KEYDOWN:
  124.        {
  125.            switch (wParam)
  126.            {
  127.                case VK_ESCAPE:
  128.                    PostQuitMessage(0);
  129.                    break;
  130.            }
  131.        }
  132.        break;
  133.  
  134.        default:
  135.            return DefWindowProc(hwnd, uMsg, wParam, lParam);
  136.    }
  137.  
  138.    return 0;
  139. }
  140.  
  141. void EnableOpenGL(HWND hwnd, HDC* hDC, HGLRC* hRC)
  142. {
  143.    PIXELFORMATDESCRIPTOR pfd;
  144.  
  145.    int iFormat;
  146.  
  147.    /* get the device context (DC) */
  148.    *hDC = GetDC(hwnd);
  149.  
  150.    /* set the pixel format for the DC */
  151.    ZeroMemory(&pfd, sizeof(pfd));
  152.  
  153.    pfd.nSize = sizeof(pfd);
  154.    pfd.nVersion = 1;
  155.    pfd.dwFlags = PFD_DRAW_TO_WINDOW |
  156.                    PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
  157.    pfd.iPixelType = PFD_TYPE_RGBA;
  158.    pfd.cColorBits = 24;
  159.    pfd.cDepthBits = 16;
  160.    pfd.iLayerType = PFD_MAIN_PLANE;
  161.  
  162.    iFormat = ChoosePixelFormat(*hDC, &pfd);
  163.  
  164.    SetPixelFormat(*hDC, iFormat, &pfd);
  165.  
  166.    /* create and enable the render context (RC) */
  167.    *hRC = wglCreateContext(*hDC);
  168.  
  169.    wglMakeCurrent(*hDC, *hRC);
  170. }
  171.  
  172. void DisableOpenGL (HWND hwnd, HDC hDC, HGLRC hRC)
  173. {
  174.    wglMakeCurrent(NULL, NULL);
  175.    wglDeleteContext(hRC);
  176.    ReleaseDC(hwnd, hDC);
  177. }
  178.  
Lo que no entiendo es: Las funciones Enable y disable OpenGL, las estructuras HDC y HRC. Espero que me puedan ayudar! Si no sabéis todo, o no queréis explicar mucho, por favor, explicarme cualquier cosa que sepáis, y así yo podré aprender mucho más!

MUCHAS GRACIAS, ESPERO PODER AYUDAR Y SER AYUDADO TODO LO QUE PUEDA :D
Páginas: 1 2 3 4 [5]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines