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
()

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

Форум — Development

Использую проект для отправки почты 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
()

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

Форум — Development

Нужно отправить сообщение электронной почты с темой, телом и вложением файла с помощью 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
()

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

Форум — Web-development

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

 ,

bad_master
()

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

Форум — Talks

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

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

 ,

bad_master
()

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

Форум — Web-development

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

 

bad_master
()

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

Форум — Games

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

 

bad_master
()

Ошибка CORS

Форум — Development

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

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
()

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

Форум — Web-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
()

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

Форум — Web-development

Хочу чтобы 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
()

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

Форум — Development

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

 

bad_master
()

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

Форум — Development

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

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

 

bad_master
()

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