LINUX.ORG.RU

Сообщения bad_master

 
Форум — Development

Специальный знак кавычки двойной

 , ,

Есть типа код который в xml пишет, я использую такое

    QString str="Обычный текст \"Текст в кавычках\"";
    ...
    QString xml = "Проверка кодировки";
    QXmlStreamWriter stream(&xml);
    stream.setAutoFormatting(true);
    stream.writeStartDocument(); 
    stream.writeStartElement("Begin");
...
    stream.writeTextElement("Tag", str);
...
    stream.writeEndElement();//Begin
    stream.writeEndDocument();
    QString s_out_xml = "any.xml";
    QFile *f_xml = new QFile(s_out_xml);
    f_xml->open(QIODevice::WriteOnly);
    QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    xml = xml.replace("<?xml version=\"1.0\"?>", "<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    xml = xml.replace("Проверка кодировки", "");
    QByteArray encodedString = codec->fromUnicode(xml);
    f_xml->write(encodedString);
    f_xml->close();
То есть текст русские буквы выводит правильно, а двойные кавычки пишет так в xml документе
<Tag>Обычный текст &quot;Текст в кавычках&quot;</Tag>
Как сделать чтобы нормально было?

bad_master
()
Форум — Development

Не собирается проект qt creator

 , ,

Использую проект для отправки почты https://github.com/bluetiger9/SmtpClient-for-Qt Делал по данному гайду https://www.youtube.com/watch?v=Ly8FzkNukrE Получил ошибку

mimebytearrayattachment.cpp:4: ошибка: undefined reference to `_imp___ZTV23MimeByteArrayAttachment'
ошибка: collect2.exe: error: ld returned 1 exit status
Не пойму в какую сторону смотреть Файл .pro
QT       += core gui network
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
CONFIG += c++11
 
# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS SMTP_BUILD
 
# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
SOURCES += \
    emailaddress.cpp \
    main.cpp \
    mainwindow.cpp \
    mimeattachment.cpp \
    mimebase64encoder.cpp \
    mimebase64formatter.cpp \
    mimebytearrayattachment.cpp \
    mimecontentencoder.cpp \
    mimecontentformatter.cpp \
    mimefile.cpp \
    mimehtml.cpp \
    mimeinlinefile.cpp \
    mimemessage.cpp \
    mimemultipart.cpp \
    mimepart.cpp \
    mimeqpencoder.cpp \
    mimeqpformatter.cpp \
    mimetext.cpp \
    quotedprintable.cpp \
    smtpclient.cpp
 
HEADERS += \
    SmtpMime \
    emailaddress.h \
    mainwindow.h \
    mimeattachment.h \
    mimebase64encoder.h \
    mimebase64formatter.h \
    mimebytearrayattachment.h \
    mimecontentencoder.h \
    mimecontentformatter.h \
    mimefile.h \
    mimehtml.h \
    mimeinlinefile.h \
    mimemessage.h \
    mimemultipart.h \
    mimepart.h \
    mimeqpencoder.h \
    mimeqpformatter.h \
    mimetext.h \
    quotedprintable.h \
    smtpclient.h \
    smtpmime_global.h
 
FORMS += \
    mainwindow.ui
 
TRANSLATIONS += \
    SMTP_QT_ru_RU.ts
 
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
 
# Location of SMTP Library
SMTP_LIBRARY_LOCATION = $$PWD/../build-SMTP_QT-desktop_mingw-Debug/
 
win32:CONFIG(release, debug|release): LIBS += -L$$SMTP_LIBRARY_LOCATION/release/ -lSmtpMime2
else:win32:CONFIG(debug, debug|release): LIBS += -L$$SMTP_LIBRARY_LOCATION/debug/ -lSmtpMime2
else:unix: LIBS += -L$$SMTP_LIBRARY_LOCATION -lSmtpMime
 
INCLUDEPATH += $$SMTP_LIBRARY_LOCATION
DEPENDPATH += $$SMTP_LIBRARY_LOCATION

bad_master
()
Форум — Talks

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

 ,

Меня вот беспокоят проблемы чтобы собрать библиотеку я должен за каким -то х... собирать тот же cmake - потому что версия собранная с их сайта устарела, почему же гов..ари из опенсурц меня так напрягают?

bad_master
()
Форум — Development

Qt отправить сообщение электронной почты

 ,

Нужно отправить сообщение электронной почты с темой, телом и вложением файла с помощью qt. Какие есть варианты? Пробовал только на джаве такое делать, в кьют не пробовал .

bad_master
()
Форум — Talks

Как вкатиться в проект?

 , ,

У меня знакомый учился в универе, потом самостоятельно изучил с++, немного алгоритмы и структуры данных, фреймворк кьют, язык сикуэл, нигде не работал программистом и сейчас спустя несколько лет идет на должность уровня миддл по сути пройдя собес и решив тестовое. Скажем так он не углублялся сильно ни в одну из описанных технологий, по вузовским меркам сдав на 3+. Что ему нужно делать на новом месте, понятно что надо клонировать проект, переключиться на ветку какую скажут или там создать свою если скажут, которую будут мержить. Писать код потом по задачам, а перед этим засыпать вопросами тех кто будет с ним рядом для вливания в проект, так то парнишка смышленый, но допустим красночёрные деревья и графы - это не про него.

bad_master
()
Форум — Talks

Создать зацикленное послание

 ,

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

Перемещено hobbit из general

bad_master
()
Форум — Development

Как создать событие срабатывающее на выделение ячейки, точнее возвращающая номер строки этой ячейки?

 

       QObject::connect(tableworkers.horizontalHeader(), SIGNAL(sectionClicked(int)), this, SLOT(sectionClicked(int)));
        
       QObject::connect(tableworkers/*.verticalHeader() */ , &QTableWidget::cellChanged [=]() {

            });
       QObject::connect(tableworkers, &QTableWidget::cellChanged, this, &MyWidget::sectionClicked);

Есть такие варианты и они не компилируются QTableWidget

bad_master
()
Форум — Development

Подозрение что веб-сервер не дает в цикле стягивать с него картинки

 ,

Пишу пет-проект в javascript не разбираюсь от слова совсем,в консоль вывожу сравнение текстур из картинок стянутых с сервера они равны друг другу, кроме первой и второй, код здесь https://codepen.io/JetStorm2/pen/VwVbrrZ рисует одну текстуру во всех полях, а должны быть разные

bad_master
()
Форум — Talks

Чем отличаются целый ворох осей?

 ,

Наплодили этих дистрибутивов целый вагон, в чем у них отличия то?

Перемещено Zhbert из general

bad_master
()
Форум — Development

Получить данные по сети?

 

Есть джаваскрипт программа на фронтенде, как бы мне получить данные из базы данных с сервера и желательно на стандартном javascript. Думаю о веб-сокетах, но немного не пойму архитектуру такого подхода, тоже бы желательно понять.

bad_master
()
Форум — Games

Не пойму как найти гайд по добавлению всех изображений в одно?

 

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

bad_master
()
Форум — Development

Ошибка CORS

 

Ошибка из-за того что пытаюсь стянуть картинки со своего жесткого

webgl-debug.js:208 Uncaught DOMException: Failed to execute 'texImage2D' on 'WebGLRenderingContext': The image element contains cross-origin data, and may not be loaded.
    at Object.texImage2D (file:///C:/Users/bad_master/Desktop/Tropic-Island/Tropic-Island/wbcars/webgl-debug.js:208:38)
    at loadTexture (file:///C:/Users/bad_master/Desktop/Tropic-Island/Tropic-Island/wbcars/Drum3D.js:841:6)
    at fon.onload (file:///C:/Users/bad_master/Desktop/Tropic-Island/Tropic-Island/wbcars/Drum3D.js:633:28)

bad_master
()
Форум — Development

Не пойму вместо наложения разных текстур у меня сочетание текстур

 ,

Доброго времени суток! Есть проблемка есть рамка и ячейки, в ячейках должны быть разные текстуры, а у меня везде сочетание всех текстур везде. https://codepen.io/JetStorm2/pen/VwVbrrZ?editors=0010

bad_master
()
Форум — Development

Как сделать шейдер для браузера из шейдера без цвета и плюсового

 ,

Есть два шейдера вот браузерный без цвета

var VSHADER_SOURCE =
  'attribute vec4 a_Position;\n' +
  'attribute vec2 a_TexCoord;\n' +
  'varying vec2 v_TexCoord;\n' +
  'uniform mat4 u_ProjMatrix;\n' +
  'uniform mat4 u_ModelMatrix;\n' +
  'void main() {\n' +
  '  gl_Position = u_ProjMatrix * u_ModelMatrix * a_Position;\n' +
  '  v_TexCoord = a_TexCoord;\n' +
  '}\n';

// Fragment shader program
var FSHADER_SOURCE =
  '#ifdef GL_ES\n' +
  'precision mediump float;\n' +
  '#endif\n' +
  'uniform sampler2D u_Sampler;\n' +
  'varying vec2 v_TexCoord;\n' +
  'void main() {\n' +
  '  gl_FragColor = texture2D(u_Sampler, v_TexCoord);\n' +
  '}\n';
И плюсовый который бы надо использовать, но браузер не знает некоторые слова в нем
const GLchar* vertexShaderSource = "#version 330 core\n"
"layout(location = 0) in vec3 position;\n"
"layout(location = 1) in vec4 color;\n"
"layout(location = 2) in vec2 texCoord;\n"
"out vec4 ourColor;\n"
"out vec2 TexCoord;\n"
"uniform mat4 transform;\n"
"void main()\n"
"{\n"
"gl_Position = transform*vec4(position, 1.0f);\n"
"ourColor = color;\n"
"TexCoord = texCoord;\n"
"}\0";
const GLchar* fragmentShaderSource = "#version 330 core\n"
"in vec4 ourColor;\n"
"in vec2 TexCoord;\n"
"out vec4 color;\n"
"uniform sampler2D ourTexture;\n"
"void main()\n"
"{\n"
"color = texture(ourTexture, TexCoord);\n"
"}\0";
Надо бы привести его к виду браузерного, не знаю как. По сути изменился только массив со значениями, 3 координаты, 4 цвета и 2 текстурные P.S. Сейчас сделал такой вариант шейдеров - но ничего не рисуется.
var VSHADER_SOURCE =
  'attribute vec3 a_Position;\n' +
  'attribute vec2 a_TexCoord;\n' +
  'varying vec2 v_TexCoord;\n' +
  'uniform mat4 u_ProjMatrix;\n' +
  'uniform mat4 u_ModelMatrix;\n' +
  'void main() {\n' +
  '  gl_Position = u_ProjMatrix * u_ModelMatrix * vec4(a_Position,1.0);\n' +
  '  v_TexCoord = a_TexCoord;\n' +
  '}\n';

// Fragment shader program
var FSHADER_SOURCE =
  '#ifdef GL_ES\n' +
  'precision mediump float;\n' +
  '#endif\n' +
  'uniform sampler2D u_Sampler;\n' +
  'varying vec2 v_TexCoord;\n' +
  'void main() {\n' +
  '  gl_FragColor = texture2D(u_Sampler, v_TexCoord);\n' +
  '}\n';
Сам код целиком https://codepen.io/JetStorm2/pen/VwVbrrZ?editors=0011

bad_master
()
Форум — Development

Как разместить и где изображение в сети чтобы не было CORS?

 , , ,

Хочу чтобы js программа подтягивала изображение без геморроя с cors. Какое-нибудь файлохранилище

Перемещено hobbit из development

bad_master
()
Форум — Games

Не получается добавить прозрачность правильно

 ,

Есть рамка https://ibb.co/jDpYGM2 при работе кода она отрисовывается становится синеватым https://ibb.co/3rff9n7 Вот код:

const GLchar* vertexShaderSource = "#version 330 core\n"
"layout(location = 0) in vec3 position;\n"
"layout(location = 1) in vec4 color;\n"
"layout(location = 2) in vec2 texCoord;\n"
"out vec4 ourColor;\n"
"out vec2 TexCoord;\n"
"uniform mat4 transform;\n"
"void main()\n"
"{\n"
"gl_Position = transform*vec4(position, 1.0f);\n"
"ourColor = color;\n"
"TexCoord = texCoord;\n"
"}\0";
const GLchar* fragmentShaderSource = "#version 330 core\n"
"in vec4 ourColor;\n"
"in vec2 TexCoord;\n"
"out vec4 color;\n"
"uniform sampler2D ourTexture;\n"
"void main()\n"
"{\n"
"color = texture(ourTexture, TexCoord);\n"
"}\0";
//...
void Scene1::LoadBorder(QOpenGLExtraFunctions* f)
{
	float buf2[] =
	{		// x,	y,	z,	 r,	  g,	b,   a,	  s,	t
			-1.0,  1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
			-1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0,
			 1.0,  1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0,
			 1.0,  1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0,
			-1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0,
			 1.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0
	};
	//	GLuint buffer2;
	f->glGenVertexArrays(1, &vao2);
	f->glGenBuffers(1, &buffer2);
	f->glBindVertexArray(vao2);
	f->glBindBuffer(GL_ARRAY_BUFFER, buffer2);
	f->glBufferData(GL_ARRAY_BUFFER, sizeof(buf2), buf2, GL_STATIC_DRAW);
	indices_2 = new GLuint[6];
	for (int i = 0; i < 6; i++)
		indices_2[i] = (GLuint)i;
	GLuint EBO2;
	f->glGenBuffers(1, &EBO2);
	f->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO2);
	f->glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices_2), indices_2, GL_STATIC_DRAW);
	// Position attribute
	f->glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 9 * sizeof(GLfloat), (GLvoid*)0);
	f->glEnableVertexAttribArray(0);
	// Color attribute
	f->glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 9 * sizeof(GLfloat), (GLvoid*)(3 * sizeof(GLfloat)));
	f->glEnableVertexAttribArray(1);
	// TexCoord attribute
	f->glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 9 * sizeof(GLfloat), (GLvoid*)(7 * sizeof(GLfloat)));
	f->glEnableVertexAttribArray(2);
	f->glEnableVertexAttribArray(0);
	f->glBindBuffer(GL_ARRAY_BUFFER, 0); // Note that this is allowed, the call to glVertexAttribPointer registered VBO as the currently bound vertex buffer object so afterwards we can safely unbind
	f->glBindVertexArray(0); // Unbind VAO (it's always a good thing to unbind any buffer/array to prevent strange bugs
	image2.load("content//border.png"); // загружаем изображение в переменную image1
	// конвертируем изображение в формат для работы с OpenGL:
	texture3 = new QOpenGLTexture(image2.mirrored());
	texture3->setMinificationFilter(QOpenGLTexture::LinearMipMapLinear);
	texture3->setMagnificationFilter(QOpenGLTexture::Linear);
	glGenTextures(1, &id3);
	glBindTexture(GL_TEXTURE_2D, id3);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image2.width(), image2.height(),
		0, GL_RGBA, GL_UNSIGNED_BYTE, image2.bits());
	glBindTexture(GL_TEXTURE_2D, 0);
}
void Scene1::ShowBorder(QOpenGLExtraFunctions* f, GLuint shaderProgram)
{
	f->glUseProgram(shaderProgram);
	//f->glBindBuffer(GL_ARRAY_BUFFER, buffer2);
	
	f->glBindVertexArray(vao2);
	glBindTexture(GL_TEXTURE_2D, id3);
	GLfloat trans2[16] =
	{
		1.0,0.0,0.0,0.0,
		0.0,1.0 /** cos(-rotate__ * 0.0175)*/,0.0/* - sin(-rotate__ * 0.0175)*/,0.0,
		0.0,0.0 /* + sin(-rotate__ * 0.0175) */ ,1.0/* * cos(-rotate__ * 0.0175)*/,0.0,
		0.0,0.0,0.0,1.0
	};
	unsigned int transformLoc = f->glGetUniformLocation(shaderProgram, "transform");
	f->glUniformMatrix4fv(transformLoc, 1, GL_FALSE, trans2);
	glEnable(GL_ALPHA_TEST);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glTexEnvf(GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_BLEND);
	f->glDrawArrays(GL_TRIANGLES, 0, 6);

	glDisable(GL_BLEND);
	glDisable(GL_ALPHA_TEST);
	f->glBindVertexArray(0);
}
Не знаю как сделать

bad_master
()
Форум — Linux-hardware

Заведётся ли видеокарта

 ,

Видео pcie4.0, мать pcie3.0?

bad_master
()
Форум — Development

Ошибка доступа по адресу

 ,

Ошибка: Вызвано исключение по адресу 0x000000006CA7CC00 (nvoglv64.dll): 0xC0000005: нарушение прав доступа при чтении по адресу 0x0000000000000000. Вот код часть его работает, но когда добавляю вторую часть сыпется ошибка

std::set<float> sleft, sright;
	sleft.insert(-0.78);
	sleft.insert(-0.48);
	sleft.insert(-0.16);
	sleft.insert(0.16);
	sleft.insert(0.48);
	sright.insert(-0.48);
	sright.insert(-0.16);
	sright.insert(0.16);
	sright.insert(0.48);
	sright.insert(0.78);
	std::set<float>::iterator itr, itrright;
	int jIter = 0, nn = 288;
	int n = 10;
	float* buf = new float[nn * n * 5];
	indices = new GLuint[36 * n * 5];
for (itr = sleft.begin(), itrright = sright.begin();
		itr != sleft.end(); itr++, itrright++)
	{
		float xleft = *itr;
		float xright = *itrright;
		for (int i = 0; i < n; i++)
		{
			//front up
			float yTex = 1 - (float)i / n;
			float yTex2 = 1 - (float)(i + 1) / n;
			buf[(0 + i * nn) + jIter * n * nn] = xleft;
			buf[(1 + i * nn) + jIter * n * nn] = 0.68f * sin((90.0 - 60.0 / n * i) * 0.0175);
			buf[(2 + i * nn) + jIter * n * nn] = 0.68f * cos((90.0 - 60.0 / n * i) * 0.0175);
			buf[(3 + i * nn) + jIter * n * nn] = 0.0;
			buf[(4 + i * nn) + jIter * n * nn] = 0.0;
			buf[(5 + i * nn) + jIter * n * nn] = 0.0;
			buf[(6 + i * nn) + jIter * n * nn] = 0.0;//1.0
			buf[(7 + i * nn) + jIter * n * nn] = yTex;
//...etc
}
}
        GLuint buffer;
	f->glGenVertexArrays(1, &vao);
	f->glGenBuffers(1, &buffer);
	f->glBindVertexArray(vao);
	f->glBindBuffer(GL_ARRAY_BUFFER, buffer);
	f->glBufferData(GL_ARRAY_BUFFER, sizeof(float) * nn * n * 5, buf, GL_STATIC_DRAW);
	for (int i = 0; i < 36 * n; i++)
		indices[i] = (GLuint)i;
	GLuint EBO;
	f->glGenBuffers(1, &EBO);
	f->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
	f->glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint) * 60, indices, GL_STATIC_DRAW);
	f->glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)0);
	f->glEnableVertexAttribArray(0);
	f->glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(3 * sizeof(GLfloat)));
	f->glEnableVertexAttribArray(1);
	f->glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(6 * sizeof(GLfloat)));
	f->glEnableVertexAttribArray(2);
	f->glEnableVertexAttribArray(0);
	f->glBindBuffer(GL_ARRAY_BUFFER, 0);
	f->glBindVertexArray(0);
	glClearColor(0, 0, 0, 0);
	image1.load("content//drum//auto1.png");
	texture = new QOpenGLTexture(image1.mirrored());
	texture->setMinificationFilter(QOpenGLTexture::LinearMipMapLinear);
	texture->setMagnificationFilter(QOpenGLTexture::Linear);
	glGenTextures(1, &id);
	glBindTexture(GL_TEXTURE_2D, id);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image1.width(), image1.height(),
		0, GL_RGBA, GL_UNSIGNED_BYTE, image1.bits());
	image1.load("content//drum//auto2.png");
	texture2 = new QOpenGLTexture(image1.mirrored());
	texture2->setMinificationFilter(QOpenGLTexture::LinearMipMapLinear);
	texture2->setMagnificationFilter(QOpenGLTexture::Linear);
	glGenTextures(1, &id2);
	glBindTexture(GL_TEXTURE_2D, id2);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image1.width(), image1.height(),
		0, GL_RGBA, GL_UNSIGNED_BYTE, image1.bits());
	glBindTexture(GL_TEXTURE_2D, 0);
/* проблема начинается после этого добавления этого кода*/
	float buf2[] =
	{// x,	y,	z,	r,	g,	b,	s,	t
			-1.0,  1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0,
			-1.0, -1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0,
			 1.0,  1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,
			 1.0,  1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0,
			-1.0, -1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0,
			 1.0, -1.0, 0.0, 0.5, 0.5, 0.5, 1.0, 1.0
	};
	GLuint buffer2;
	f->glGenVertexArrays(1, &vao2);
	f->glGenBuffers(1, &buffer2);
	f->glBindVertexArray(vao2);
	f->glBindBuffer(GL_ARRAY_BUFFER, buffer2);
	f->glBufferData(GL_ARRAY_BUFFER, sizeof(buf2), buf2, GL_STATIC_DRAW);

	GLuint  indices_2[] = {
	0,1,2,
	3,4,5
	};// Note that we start from 0!
	GLuint EBO2;
	f->glGenBuffers(1, &EBO2);
	f->glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO2);
	f->glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices_2), indices_2, GL_STATIC_DRAW);
	// Position attribute
	f->glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)0);
	f->glEnableVertexAttribArray(0);
	// Color attribute
	f->glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(3 * sizeof(GLfloat)));
	f->glEnableVertexAttribArray(2);
	// TexCoord attribute
	f->glVertexAttribPointer(3, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (GLvoid*)(6 * sizeof(GLfloat)));
	f->glEnableVertexAttribArray(3);
	f->glEnableVertexAttribArray(0);
	f->glBindBuffer(GL_ARRAY_BUFFER, 0); // Note that this is allowed, the call to glVertexAttribPointer registered VBO as the currently bound vertex buffer object so afterwards we can safely unbind
	f->glBindVertexArray(0); // Unbind VAO (it's always a good thing to unbind any buffer/array to prevent strange bugs
	image2.load("content//border.png"); // загружаем изображение в переменную image1
	// конвертируем изображение в формат для работы с OpenGL:
	texture3 = new QOpenGLTexture(image2.mirrored());
	texture3->setMinificationFilter(QOpenGLTexture::LinearMipMapLinear);
	texture3->setMagnificationFilter(QOpenGLTexture::Linear);
	glGenTextures(1, &id3);
	glBindTexture(GL_TEXTURE_2D, id3);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image2.width(), image2.height(),
		0, GL_RGBA, GL_UNSIGNED_BYTE, image2.bits());
	glBindTexture(GL_TEXTURE_2D, 0);
Код отрисовки
glEnable(GL_DEPTH_TEST);
	f->glUseProgram(shaderProgram);
	f->glBindVertexArray(vao);
	GLfloat trans[16] =
	{
		1.0,0.0,0.0,0.0,
		0.0,1.0 * cos(rotate__ * 0.0175),0.0 - sin(rotate__ * 0.0175),0.0,
		0.0,0.0 + sin(rotate__ * 0.0175),1.0 * cos(rotate__ * 0.0175),0.0,
		0.0,0.0,0.0,1.0
	};
	rotate__ += 1;
	if (rotate__ >= 360)
		rotate__ = 0;
	unsigned int transformLoc = f->glGetUniformLocation(shaderProgram, "transform");
	f->glUniformMatrix4fv(transformLoc, 1, GL_FALSE, trans);
	for (int j = 0; j < 5; j++)
	{
		glBindTexture(GL_TEXTURE_2D, id);
		for (int i = 0 + j * 10; i < 10 + j * 10; i++)
			f->glDrawArrays(GL_TRIANGLES, 36 * i, 6/* 36 * 10 * 5*/);
		glBindTexture(GL_TEXTURE_2D, id2);
		for (int i = 0 + j * 10; i < 10 + j * 10; i++)
			f->glDrawArrays(GL_TRIANGLES, 36 * i + 6, 6/* 36 * 10 * 5*/);
		glBindTexture(GL_TEXTURE_2D, id);
		for (int i = 0 + j * 10; i < 10 + j * 10; i++)
			f->glDrawArrays(GL_TRIANGLES, 36 * i + 12, 6/* 36 * 10 * 5*/);
		glBindTexture(GL_TEXTURE_2D, id2);
		for (int i = 0 + j * 10; i < 10 + j * 10; i++)
			f->glDrawArrays(GL_TRIANGLES, 36 * i + 18, 6/* 36 * 10 * 5*/);
		glBindTexture(GL_TEXTURE_2D, id);
		for (int i = 0 + j * 10; i < 10 + j * 10; i++)
			f->glDrawArrays(GL_TRIANGLES, 36 * i + 24, 6/* 36 * 10 * 5*/);
		glBindTexture(GL_TEXTURE_2D, id2);
		for (int i = 0 + j * 10; i < 10 + j * 10; i++)
			f->glDrawArrays(GL_TRIANGLES, 36 * i + 30, 6/* 36 * 10 * 5*/);
	}
/*вот добавленный код код выше для отрисовки работает*/
	f->glBindVertexArray(vao2);
	glBindTexture(GL_TEXTURE_2D, id3);
	f->glDrawArrays(GL_TRIANGLES, 0, 6);
	f->glBindVertexArray(0);

bad_master
()
Форум — Development

Как вращать объект на современном opengl?

 

Есть объект он задается в статическом массиве координаты в цикле по математическим формулам. Добавил вращение по уроку https://habr.com/ru/articles/319144/, но проблема такая что весь объект вращается одинаково, он с копиями. Как вращать разные копии по-разному? Насколько я понял glPushMatrix и glPopMatrix не используется в современном опенжл.

bad_master
()
Форум — Development

Как присвоить указателю массив значений

 

Есть такой код

float* m;
m={1,2,3,4,5,6};
Нужно именно так как-то то есть объявление отдельно и инициализация отдельно.

bad_master
()

RSS подписка на новые темы