Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> С чего начать - C# + OpenGL 
:(
    Опции темы
bc0der
Дата 15.4.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.5.2006

Репутация: нет
Всего: нет



Подскажите пожалуйста как написать хоть самую простую OpenGL программу на C# ? Скачал библиотеку Tao . Дайте пожалуйста примеры , кто писал проги ( самые простые ) .
PM MAIL ICQ   Вверх
WERITAS
Дата 16.4.2007, 22:54 (ссылка)   | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

Репутация: 2
Всего: 5



ИМХО неудачный выбор языка для работы с графикой. C# - скриптовый язык, и на нем одном хорошее графическое приложение не построишь


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
$tatic
Дата 16.4.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: 7
Всего: 22



На сайте библиотеки SDL.NET есть порты примеров NeHe для связки SDL.NET + Tao.GL на C#.

Цитата(WERITAS @  16.4.2007,  23:54 Найти цитируемый пост)
C# - скриптовый язык

C# - не скриптовый язык.

Цитата(WERITAS @  16.4.2007,  23:54 Найти цитируемый пост)
на нем одном хорошее графическое приложение не построишь

Ни на чем не основанное заключение. C# свободно справляется и не с такими задачами.
PM MAIL   Вверх
arilou
Дата 17.4.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



WERITAS
$tatic


M
arilou
Главное, во флейм не сорвитесь



--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
nerezus
Дата 18.4.2007, 16:17 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата
C# - скриптовый язык, и на нем одном хорошее графическое приложение не построишь
 Прежде, чем что-то ляпнуть, надо думать, головой.


arilou$tatic, И вообще мне кажется, что это тролль, см. причины изменения его репутации.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
RWander
Дата 12.9.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



Цитата(nerezus @  18.4.2007,  18:17 Найти цитируемый пост)
И вообще мне кажется, что это тролль

 smile

Добавлено через 8 минут и 39 секунд
Цитата(bc0der @  15.4.2007,  19:40 Найти цитируемый пост)
Подскажите пожалуйста как написать хоть самую простую OpenGL программу на C# ?


подключи opengl32.dll и glu32.dll к своему проекту и импортируй те функции, которые тебе необходимы

например:
Код

        [DllImport("opengl32.dll")]   public static extern void glBegin(uint mode);
        [DllImport("opengl32.dll")]   public static extern void gEnd();
        ....


ЗЫ: в списке юсингов необходимо прописать:
Код

using System.Runtime.InteropServices;


хотя, по-моему, tao framework использовать лучше - геморою меньше будет.

Добавлено через 10 минут и 6 секунд
или сразу переходи на XNA framework


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
NightmareZ
Дата 21.9.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(bc0der @  15.4.2007,  17:40 Найти цитируемый пост)
Дайте пожалуйста примеры , кто писал проги ( самые простые ) .


Код

using System;
using Tao.Platform.Windows;
using Tao.OpenGl;
using System.Runtime.InteropServices;

namespace MyFramework
{
    public class RenderException : ApplicationException 
    {
        public RenderException(string s) : base(s) { }
    }

    public class Render: IDisposable
    {
        private IntPtr Handle = IntPtr.Zero;
        private IntPtr dc = IntPtr.Zero;
        private IntPtr hrc = IntPtr.Zero;

        public Render(IntPtr Handle)
        {
            this.Handle = Handle;
            if (Handle == IntPtr.Zero)
            {
                throw new RenderException("Invalid window handle!");
            }

            dc = User.GetDC(Handle);
            if (dc == IntPtr.Zero)
            {
                throw new RenderException("Can't get device context!");
            }

            var pfd = new Gdi.PIXELFORMATDESCRIPTOR();
            pfd.dwFlags = Gdi.PFD_SUPPORT_OPENGL |
                Gdi.PFD_DRAW_TO_WINDOW |
                Gdi.PFD_DOUBLEBUFFER;
            pfd.nVersion = 1;
            pfd.nSize = (short)Marshal.SizeOf(pfd);

            var PixelFormat = Gdi.ChoosePixelFormat(dc, ref pfd);
            if (PixelFormat == 0)
            {
                throw new RenderException("Can't choose pixel format!");
            }

            if (!Gdi.SetPixelFormat(dc, PixelFormat, ref pfd))
            {
                throw new RenderException("Can't set pixel format!");
            }

            hrc = Wgl.wglCreateContext(dc);
            if (hrc == IntPtr.Zero)
            {
                throw new RenderException("Can't create rendering context!");
            }

            if (!Wgl.wglMakeCurrent(dc, hrc))
            {
                throw new RenderException("Can't set current rendering context!");
            }
        }

        ~Render()
        {
            Destructor();
        }

        private void Destructor()
        {
            if (hrc != IntPtr.Zero)
            {
                Wgl.wglMakeCurrent(IntPtr.Zero, IntPtr.Zero);
                Wgl.wglDeleteContext(hrc);
            }

            if (dc != IntPtr.Zero)
            {
                User.ReleaseDC(Handle, dc);
            }

            Handle = IntPtr.Zero;
        }

        public void Dispose()
        {
            GC.SuppressFinalize(this);
            Destructor();
        }

        public void Resize(int Width, int Height)
        {
            Width = Math.Abs(Width);
            Height = Math.Abs(Height);

            if (Width == 0)
            {
                Width = 1;
            }

            if (Height == 0)
            {
                Height = 1;
            }

            Gl.glViewport(0, 0, Width, Height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Glu.gluPerspective(45, (double)Width / (double)Height, 1, 1000);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
        }

        public void BeginScene()
        {
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
        }

        public void EndScene()
        {
            Gdi.SwapBuffers(dc);
        }
    }
}


Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MakarovFramework;

namespace MyProject
{
    public partial class Form1 : Form
    {
        private Render render = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            render = new Render(Handle);
            render.Resize(Width, Height);
            
        }

        private void Form1_Click(object sender, EventArgs e)
        {
            if (render != null)
            {
                render.BeginScene();

                render.EndScene();
            }
        }

        private void Form1_ResizeEnd(object sender, EventArgs e)
        {
            if (render != null)
            {
                render.Resize(Width, Height);
            }
        }
    }
}



--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
RWander
Дата 22.9.2007, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



NightmareZ, хороший пример +1
есть еще одна очень хорошая статья по использованию OpenGL в .NET



--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
arilou
Дата 22.9.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



NightmareZ, тока вместо финалайзера надо использовать реализацию IDisposable


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
NightmareZ
Дата 24.9.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(arilou @  22.9.2007,  19:32 Найти цитируемый пост)
NightmareZ, тока вместо финалайзера надо использовать реализацию IDisposable

Дык, как бы, оно и используется.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
RWander
Дата 24.9.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



Цитата(NightmareZ @  21.9.2007,  20:55 Найти цитируемый пост)
 var pfd = new Gdi.PIXELFORMATDESCRIPTOR();

а что за "var"? у меня выдает ошибку, говорит пространство имен или тип не найден.



--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
RWander
Дата 24.9.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



а и еще, как с помощью Tao Framework работать с текстурами? есть ли какой-нибудь аналог функции auxDIBImageLoad(char* file) для загрузки текстуры из файла?


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
NightmareZ
Дата 24.9.2007, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(RWander @ 24.9.2007,  20:57)
Цитата(NightmareZ @  21.9.2007,  20:55 Найти цитируемый пост)
 var pfd = new Gdi.PIXELFORMATDESCRIPTOR();

а что за "var"? у меня выдает ошибку, говорит пространство имен или тип не найден.

Юз да Visual Studio 2008. Это C#3.

Просто чтоб не писать
Код

Gdi.PIXELFORMATDESCRIPTOR pfd = new Gdi.PIXELFORMATDESCRIPTOR();

пишем
Код

var pfd = new Gdi.PIXELFORMATDESCRIPTOR();

и тип переменной pfd определяется сам.

Цитата(RWander @ 24.9.2007,  21:25)
а и еще, как с помощью Tao Framework работать с текстурами? есть ли какой-нибудь аналог функции auxDIBImageLoad(char* file) для загрузки текстуры из файла?

Определена ли данная функция в Tao Framework - не знаю. Даже если нет - никто не мешает самому её описать и использовать.

Это сообщение отредактировал(а) NightmareZ - 24.9.2007, 22:48


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
RWander
Дата 25.9.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



 может хотя бы есть какой-нибуь пример по работе с текстурами в tao?


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
RWander
Дата 25.9.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



Попытался написать загрузку текстуры, вроде правильно, но не работает. Может кто подскажет, в чем проблема?
Код

            int[] texture = new int[1];  // Место для одной текстуры

           //получение массива байтов
            System.IO.Stream str = 
                new System.IO.FileStream(@"img.bmp", System.IO.FileMode.Open); 
            System.IO.BinaryReader br = 
                new System.IO.BinaryReader(str);
            byte[] img_bytes = br.ReadBytes((int)br.BaseStream.Length);
            str.Close();

            // Создание текстуры
            Gl.glGenTextures(1, texture);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[0]);

            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);


            Gl.glPixelStorei(Gl.GL_UNPACK_ALIGNMENT, 1);
            Glu.gluBuild2DMipmaps(Gl.GL_TEXTURE_2D, Gl.GL_RGB, 57, 64, Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, img_bytes);

            //должен рисоваться текстурированный треугольник,
            //но вместо это рисуется белый треугольник.
            Gl.glBegin(Gl.GL_TRIANGLES);
            Gl.glTexCoord2f(1, 1); Gl.glVertex2f(1, 1);
            Gl.glTexCoord2f(0, 0); Gl.glVertex2f(0, 0);
            Gl.glTexCoord2f(0, 1); Gl.glVertex2f(0, 1);
            Gl.glEnd();




--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
arilou
Дата 25.9.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Цитата(NightmareZ @  24.9.2007,  20:46 Найти цитируемый пост)

Дык, как бы, оно и используется. 

Смутила реализация. Обычно делается так:

Код

class A : IDisposable
{
    bool _isDisposed = false;
   
    public void Dispose()
    {
          // dispose of unmanaged resources here
          _isDisposed = true;
     }

     ~A()
     {
          if(!_isDisposed)
               Dispose();
     }
}



--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
NightmareZ
Дата 15.10.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(arilou @ 25.9.2007,  15:19)
Цитата(NightmareZ @  24.9.2007,  20:46 Найти цитируемый пост)

Дык, как бы, оно и используется. 

Смутила реализация. Обычно делается так:

Код

class A : IDisposable
{
    bool _isDisposed = false;
   
    public void Dispose()
    {
          // dispose of unmanaged resources here
          _isDisposed = true;
     }

     ~A()
     {
          if(!_isDisposed)
               Dispose();
     }
}

У меня вместо _isDisposed идёт проверка, равны ли dc и hrc нулю, и, если не равны, то освобождаются. Вводить лишнюю переменную тут нет смысла.

Если же ещё больше придираться, то деструктор тут вообще нехорошо использовать. Потому что он скорее всего вызовется после того, как будет закрыто окно.... и вызовется ReleaseDC.... для dc, которого уже нет.

Наверное, стоит в конструктор передавать не Handle окна, а ссылку на экземпляр Form, чтоб класс рендера смог заюзать обработчик OnClosing формы для удаления dc как раз перед тем, как окно будет закрыто.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
arilou
Дата 15.10.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Цитата(NightmareZ @  15.10.2007,  20:38 Найти цитируемый пост)
и вызовется ReleaseDC.... для dc, которого уже нет.

это верно только для Windows Forms, т.к. там куча костылей сделана для того, чтобы не утекали GDI ресурсы.
Цитата(NightmareZ @  15.10.2007,  20:38 Найти цитируемый пост)
Наверное, стоит в конструктор передавать не Handle окна, а ссылку на экземпляр Form, чтоб класс рендера смог заюзать обработчик OnClosing формы для удаления dc как раз перед тем, как окно будет закрыто. 

А вот это верно! Так и надо, т.к. handle может меняться.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
NightmareZ
Дата 15.10.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 1
Всего: 13



Цитата(arilou @  15.10.2007,  22:27 Найти цитируемый пост)
это верно только для Windows Forms, т.к. там куча костылей сделана для того, чтобы не утекали GDI ресурсы.

Всмысле?


Цитата(arilou @  15.10.2007,  22:27 Найти цитируемый пост)
А вот это верно! Так и надо, т.к. handle может меняться.

Каким это образом может меняться handle окна?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
arilou
Дата 16.10.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61



Цитата(NightmareZ @  15.10.2007,  23:38 Найти цитируемый пост)
Всмысле?

В смысле, посмотри Reflector'ом что делает великолепный класс HandleCollector, вроде так называется. В Windows Forms для защиты от дурака (читай "программиста, не вызывающего Dispose у контролов и форм") есть примочка. Она сама освобождает хэндлы, если этого не сделать.

Цитата(NightmareZ @  15.10.2007,  23:38 Найти цитируемый пост)
Каким это образом может меняться handle окна? 

Про событие RecreatingWindowHandle не слышал? Если ты скрываешь окно, то насколько я помню, оно освобождает хэндл. 

ЗЫ. Это мы уже в оффтопике, если есть вопросы, пиши в ПМ.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
galileopro
Дата 7.6.2009, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

Репутация: нет
Всего: нет



Помогите разобраться кто-нибудь
я попытался скомпилировать код NightmareZ и наткнулся на следующие ошибки

Error    1    The type or namespace name 'Tao' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\OpenGLforC\OpenGLforC\Form1.cs    

Error    2    The type or namespace name 'Tao' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\OpenGLforC\OpenGLforC\Form1.cs    

В чем тут дело?
PM MAIL WWW ICQ   Вверх
RWander
Дата 7.6.2009, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



скорее всего у тебя не установлен Tao framework (нет необходмых dll-ок в GAC). 


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
galileopro
  Дата 5.7.2009, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 7.6.2009
Где: Харьков

Репутация: нет
Всего: нет



А вот вам еще одна реализация текстуры
Код
private void Coord(int number, double x, double y, double z)
        {
            string File;
            int size=16;
            File = "Texture"+number.ToString()+".bmp";
            byte[, ,] Bits = new byte[size, size, 3];
            Gl.glEnable(Gl.GL_TEXTURE_2D);
            Bitmap bitmap = new Bitmap(File);
            for (int i = 0; i <= size-1; i++)
                for (int j = 0; j <= size-1; j++)
                {
                    Bits[i, j, 0] = bitmap.GetPixel(i, j).R;
                    Bits[i, j, 1] = bitmap.GetPixel(i, j).G;
                    Bits[i, j, 2] = bitmap.GetPixel(i, j).B;
                }

            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0,
                            Gl.GL_RGB, size, size, 0,
                            Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, @Bits);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

            Gl.glPushMatrix();
            Gl.glRotated(-90, 0, 0, 1);
            Gl.glTranslated(-1.0+y/450, -1.0+x/450, z/450);

            Gl.glBegin(Gl.GL_QUADS);

            Gl.glTexCoord2d(0.0, 1.0);
            Gl.glVertex2d(0, 1);

            Gl.glTexCoord2d(0.0f, 0.0f);
            Gl.glVertex2d(0, 0);

            Gl.glTexCoord2d(1.0, 0.0f);
            Gl.glVertex2d(1, 0);

            Gl.glTexCoord2d(1.0f, 1.0f);
            Gl.glVertex2d(1, 1);

            Gl.glEnd();
            Gl.glPopMatrix();
            Gl.glFlush();
        }


PM MAIL WWW ICQ   Вверх
anvi
Дата 9.8.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.8.2009
Где: Владимир

Репутация: 1
Всего: 1



про работу c ogl в C# можно почитать здесь: OpenGL C#

правда там только заполняется ресурс и инфа для начинающих, но в принципе ее уже немало  smile 
PM MAIL GTalk   Вверх
RWander
Дата 9.8.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

Репутация: нет
Всего: 6



anvi,  smile 


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.1550 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.