LINUX.ORG.RU

в чем проблема? Не печатает?

Osmos ★★
()

Забавно, на GeForce 7900GS таже финя - треугольник зеленый. Хотя беру свой старый и унылый код на Pascal'е - все работает 8)

Andru ★★★★
()
Ответ на: комментарий от gunja

> а скажите что в убунте надо поставить, чтобы Gl заголовки были?

Если стоят проприетарные драйвера nvidia, то пакет nvidia-glx-${NV_VERSION}-dev.

По теме: думается мне, что что-то там неправильно инициализировано или не инициализировано вообще. Сейчас пару часов посплю и после попробую разобраться...

Deleted
()
Ответ на: комментарий от Dramokl

> Погуглил... -DGL_GLEXT_PROTOTYPES 

Аааааааа! /me бьётся головой об стену. Как я мог не заметить?! Добавление -Wall при компиляции раскрывает тайну:

$ gcc -Wall -lGL gltest.c 
gltest.c: В функции ‘redraw’:
gltest.c:17: предупреждение: неявная декларация функции ‘glUseProgram’
gltest.c:19: предупреждение: неявная декларация функции ‘glUniform1f’
gltest.c:19: предупреждение: неявная декларация функции ‘glGetUniformLocation’
gltest.c:20: предупреждение: неявная декларация функции ‘glUniform1i’
gltest.c: В функции ‘main’:
gltest.c:132: предупреждение: неявная декларация функции ‘glCreateShader’
gltest.c:134: предупреждение: неявная декларация функции ‘glCreateProgram’
gltest.c:136: предупреждение: неявная декларация функции ‘glShaderSource’
gltest.c:138: предупреждение: неявная декларация функции ‘glCompileShader’
gltest.c:140: предупреждение: неявная декларация функции ‘glAttachShader’
gltest.c:142: предупреждение: неявная декларация функции ‘glLinkProgram’
gltest.c:143: предупреждение: неявная декларация функции ‘glDeleteShader’

> Странно как то...

Всё логично - это же функции расширений и в <GL/glext.h> они не объявляются без #define GL_GLEXT_PROTOTYPES. И компилятор их объявляет неявно, в соответствии с тем, как функция вызывается. В результате аргумент в функцию передаётся неправильно.

Deleted
()
Ответ на: комментарий от Deleted

Да....просто о -Wall не подумал.... узнал много нового о своей программе )

Dramokl
() автор топика
Ответ на: комментарий от Deleted

> Добавление -Wall

у вас компилер какой? у меня это не предупреждениями, а ошибками возвращалось: нет такой функции в зоне видимости.

правда я собирал g++ и тип файла cpp а не c.

так как проблема решается?

gunja
()
Ответ на: комментарий от gunja

> у вас компилер какой? у меня это не предупреждениями, а ошибками возвращалось: нет такой функции в зоне видимости.

> правда я собирал g++ и тип файла cpp а не c.


Я собирал gcc. В Си предусмотрено неявное определение, а в Си++ нет, поэтому g++ выдавал ошибки.

> так как проблема решается?


Выше написано. Добавлением #define до включения GL/gl.h или то же самое но опцией -D компилятра (точнее препроцессора). А более правильно и портируемо ИМХО - сделать указатели на нужные функции и получать их адреса с помощью glXGetProcAddress после проверки наличия нужных расширений.

Deleted
()
Ответ на: комментарий от Deleted

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

gunja
()
Ответ на: комментарий от gunja

Какая видеокарта и какие драйвера? Покажи вывод glxinfo, возможно у тебя шейдеры вообще не поддерживаются.

Deleted
()
Ответ на: комментарий от Deleted

если не забуду, то завтра. это на институтской атишной карточке. R550/770 что-то говорило. может у меня дрова на видео другие стоят правда.

gunja
()
Ответ на: комментарий от gunja

Я нищеброд с
OpenGL renderer string: GeForce FX 5600XT/AGP/SSE/3DNOW!
OpenGL version string: 2.1.2 NVIDIA 173.14.18
Но работает нормально, желтый треугольник вижу.

Margel
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.